Vue實現對陣列 物件的深拷貝 複製

2022-02-25 01:33:29 字數 755 閱讀 6335

當元件間傳遞物件時,由於此物件的引用型別指向的都是乙個位址(除了基本型別跟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...