栈内存中的数据每一次赋值都会产生一个新的内存
标签:
1. 如果是根基数据类型(String,Number,Boolean,Null,undefined),名字和值城市储存在栈内存中。栈内存中的数据每一次赋值城市孕育产生一个新的内存,每条数据之间不彼此影响,var a = 1; b = a; // 栈内存会斥地一个新的内存空间,此时b和a都是彼此独立的 b = 2; console.log(a); // 1
2. 如果是引用数据类型(Object),,名字存在栈内存中,值存在堆内存中,但是栈内存会供给一个引用的地点指向堆内存中的值。 例如:var a=[0,1,2,3,4]。a存储在占内存中,它指向的堆内存的地点。
3.用slice实现对数组的深拷贝
var arr1 = ["1","2","3"]; var arr2 = arr1.slice(0); arr2[1] = "9"; console.log("数组的原始值:" + arr1 ); console.log("数组的新值:" + arr2 );
concat复制的数组不会受原有的地点数据变革影响 二.东西深拷贝 1.如果需要,可以通过将 vm.$data 传入 JSON.parse(JSON.stringify(...)) 得到深拷贝的原始数据东西。--vue官网供给 2.如果东西的value是根基类型的话,也可以用Object.assign来实现深拷贝,但是要把它赋值给一个空东西
var obj = { a: 1, b: 2 } var obj1 = Object.assign({}, obj); // obj赋值给一个空{} obj1.a = 3; console.log(obj.a);// 1
三。通用的深拷贝要领
浅谈js中的深拷贝和浅拷贝
温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/31647.html