當元件間傳遞物件時,由於此物件的引用型別指向的都是乙個位址(除了基本型別跟null,物件之間的賦值,只是將位址指向同乙個,而不是真正意義上的拷貝),如下
陣列:var a = [1,2,3
];var b =a;
b.push(
4); //
b中新增了乙個4
alert(a); //
a變成了[1,2,3,4]
物件:var obj = ;
var obj2 =obj;
obj2.a = 20; //
obj2.a改變了,
alert(obj.a); //
20,obj的a跟著改變
這就是由於物件型別直接賦值,只是將引用指向同乙個位址,導致修改了obj會導致obj2也被修改
所以在vue中,如果多個元件引用了同乙個物件作為資料,那麼當其中乙個元件改動物件資料時,其他物件的資料也會同步改動。有這種雙向繫結的需要的話,那麼自然是最好的,但如果不需要這種繫結而希望各元件的物件資料之間相互獨立,即是互不關聯的物件副本的話,可以用下面的方法解決
computed: ;obj=json.parse(json.stringify(this.templatedata)); //
this.templatedata是父元件傳遞的物件
return
obj
} }
參考文件:
vue物件深拷貝 vue 深拷貝學習
關於vue中json.parse json.stringify 使用深拷貝問題 一般我們單獨用json.parse 或json.stringify 今天在學vue看到json.parse json.stringify 的用法,這裡研究一下 首先分別說下他們的用法 json.parse 是將字串中的物...
物件陣列的深拷貝和物件的深拷貝
1 對於 普通陣列 陣列元素為數字或者字串 深拷貝很簡單,拷貝之後兩個陣列指標指向的儲存位址不同,從而完成深拷貝 var test 1,2,3 原陣列 var testcopy concat test 拷貝陣列 testcopy 0 4 console.log test 1,2,3 console....
JS陣列和物件實現深拷貝
for 迴圈 for 迴圈 copy function copyfun arr return copyarr let arr1 1 2,3 4 let arr2 copyfun arr1 1,2,3,4 console.log arr2 1,2,3,4 arr2 0 10 console.log a...