解讀vue項(xiàng)目中遇到的深拷貝淺拷貝問題
vue項(xiàng)目的深拷貝淺拷貝問題
遇到的問題
使用element-ui修改表單文本框的數(shù)據(jù)時(shí),無(wú)論確定還是取消,頁(yè)面數(shù)據(jù)都在同步修改
原因:
復(fù)雜類型的賦值是淺拷貝,直接賦值 會(huì)導(dǎo)致雙向修改
解決的方法:
將淺拷貝轉(zhuǎn)換成深拷貝
解決思路:
先把該對(duì)象轉(zhuǎn)成字符串(普通數(shù)據(jù)類型), 就沒有引用類型的影響了。再轉(zhuǎn)回對(duì)象使用。
轉(zhuǎn)換方式 :
JSON.parse(JSON.stringify(對(duì)象))

這里簡(jiǎn)述下深拷貝淺拷貝的概念
淺拷貝: 將A對(duì)象賦值給B對(duì)象,修改B對(duì)象的屬性和方法會(huì)影響到A對(duì)象的屬性和方法。
深拷貝: 將A對(duì)象賦值給B對(duì)象,修改B對(duì)象的屬性和方法不會(huì)影響到A對(duì)象的屬性和方法。
vue深拷貝、淺拷貝的區(qū)別
1、淺拷貝
this.ProductionLineForm = {
"produeLineName": "產(chǎn)線1",
"departmentId": 1,
"produceLineStatus": 0,
"director": 5,
"description": "測(cè)試產(chǎn)線",
"keyCraftNodeId":1
}
let productionLineForm = this.ProductionLineForm;
productionLineForm.produeLineName = '修改名稱'
console.info('this.ProductionLineForm', this.ProductionLineForm)查看原form的值:

2、深拷貝
使用JSON.parse(JSON.stringify(要拷貝的對(duì)象))。
JSON.stringify()對(duì)象轉(zhuǎn)為串,JSON.parse()串轉(zhuǎn)為對(duì)象,JSON操作是深拷貝操作。
this.ProductionLineForm = {
"produeLineName": "產(chǎn)線1",
"departmentId": 1,
"produceLineStatus": 0,
"director": 5,
"description": "測(cè)試產(chǎn)線",
"keyCraftNodeId": 1
}
let productionLineForm = JSON.parse(JSON.stringify(this.ProductionLineForm));
productionLineForm.produeLineName = '修改名稱'
console.info('this.ProductionLineForm', this.ProductionLineForm)查看原form的值:

對(duì)比發(fā)現(xiàn),淺拷貝,在修改productionLineForm的參數(shù)時(shí),原form也被修改。而深拷貝修改參數(shù)不會(huì)影響原form的值。
注意:
淺拷貝:新對(duì)象賦值,只是取的舊對(duì)象棧中的值,也就是引用對(duì)象的值
深拷貝:會(huì)在堆里邊開辟一個(gè)空間,存放自己的對(duì)象值
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
vue如何實(shí)現(xiàn)本項(xiàng)目頁(yè)面之間跳轉(zhuǎn)
這篇文章主要介紹了vue如何實(shí)現(xiàn)本項(xiàng)目頁(yè)面之間跳轉(zhuǎn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-04-04
vue3自定義確認(rèn)密碼匹配驗(yàn)證規(guī)則的操作代碼
這篇文章主要介紹了vue3自定義確認(rèn)密碼匹配驗(yàn)證規(guī)則的操作代碼,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2024-01-01
解決在Vue中使用axios用form表單出現(xiàn)的問題
今天小編就為大家分享一篇解決在Vue中使用axios用form表單出現(xiàn)的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2019-10-10
富文本編輯器vue2-editor實(shí)現(xiàn)全屏功能
這篇文章主要介紹了富文本編輯器vue2-editor實(shí)現(xiàn)全屏功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下2019-05-05

