1; javaScript 深/浅拷贝
浅拷贝: 是copy 对象的引用地址, 改变引用地址值, 则改版复制对象也会改变。
深拷贝: 深拷贝是彻底的复制该对象
2: 浅拷贝的实现方式:
直接赋值
Object.assign() // 一层是深拷贝,多层是浅拷贝
ES6扩展运算符 // let newObj={ …obj }
jQuery.extend方法 let newObj = jQuery.extend({}, obj);
类数组对象拷贝 Array.from(array1) / Array.concat() / Array.slice()等等
3: 深拷贝的实现方式
var newObj = JSON.parse(JSON.stringify(obj));
jQuery.extend方法 var newObj = jQuery.extend(true, {}, obj);
Object.assign() //一层是深拷贝,多层是浅拷贝
jQuery.extend第一个参数指示是否深度合并
// $.extend( [deep ], target, object1 [, objectN ] )
4: 函数的调用:
var deepCopy = function(obj) {
if (typeof obj !== 'object') return;
var newObj = obj instanceof Array ? [] : {};
for (var key in obj) {
if (obj.hasOwnProperty(key)) {
newObj[key] = typeof obj[key] === 'object' ? deepCopy(obj[key]) : obj[key];
}
}
return newObj;
}
var obj = { a:1, arr: [1,2] };
var newObj = deepCopy(obj);
obj.arr[0] = 10;
console.log(newObj.arr[0]); // 1
javaScript 深/浅拷贝
最新推荐文章于 2023-03-29 18:33:37 发布