JavaScript 对象拷贝赋值

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;
}

发表评论