JavaScript 的对象赋值是引用赋值,即新的对象变量只是原对象的一个引用,对新对象变量的属性进行修改,就是对原有对象属性的修改。
obj1={
name:"wang",
age:18
}
obj2=obj1
obj2.name="hu"
如上面代码,obj2属性name修改为“hu”,则obj1的name也变成“hu”了。
很多时候,我们希望obj2是一个独立于obj1的对象,仅是初始值从obj1拷贝。这时,就需要自己写拷贝对象函数了。下面就是JavaScript 的对象拷贝赋值函数。
function clone(obj) {
if (obj === null || typeof obj!== 'object') {
return obj;
}
let temp = obj.constructor(); // give temp the same constructor as obj
for (let key in obj) {
temp[key] = clone(obj[key]); // copy obj[key] to temp
}
return temp;
}