深浅拷贝

124 阅读1分钟

浅拷贝

浅拷贝仅仅复制了引用,但是如果根对象的值发生改变的话,引用根对象的都会发生改变。
例子:  let obj = {a:1,b:2};
		let obj2 = obj;
		console.log(obj2.a)     // 1
		obj.a = 55;
		console.log(obj2.a)     // 55

深拷贝

深拷贝指即使根对象的值发生的改变,所引用根对象的都不会有影响。
例子: 
        let obj = {a:1,b:2};
	let obj2 = JSON.parse(JSON.stringify(obj));
	console.log(obj2.a);    // 1
	obj.a = 55;
	console.log(obj2.a);    // 1
	
例2:
        let obj = {a:1,b:2};
	let obj2 = deepCopy(obj);
	console.log(obj2.a);    // 1
	obj.a = 55;
	console.log(obj2.a);    // 1
	// 利用 for - in 循环,一个一个复制
	function deepCopy(_obj){
		var newObj = {};
		for(let keys in _obj){
			if(_obj.hasOwnProperty(keys)){
				newObj[keys] = _obj[keys]
			}
		}
		return newObj;
	}

有什么不对的地方或者需要改进的欢迎指出。