js基础十-- 克隆(拷贝)

一、克隆(拷贝)

1、浅拷贝

拷贝就是复制,就相当于把一个对象中的所有内容,复制一份给另一个对象(直接复制)。或者说就是把一个对象的地址给了另一个对象,他们指向相同,两个对象之间有共同的属性或者方法,都可以使用

var obj = {
    name: "abc",
    age: 123,
    card: ["visa", "master"],
    wife: {
        name: "bcd",
        son: {
            name: "aaa",
        }
    }
}
var obj1 = {};

function clone(target, origin) {
    for (var prop in origin) {
       target[prop] = origin[prop];
    }
}
clone(obj1,obj);  
console.log(obj);
console.log(obj1);

打印结果如下:

js基础十-- 克隆(拷贝)

这里主要区分原始值和引用值的拷贝,原始值的拷贝,拷贝的是整个原始值,而引用值的拷贝,拷贝的是地址,如果是浅拷贝,一旦obj对象中含有引用值。拷贝之后,如果对obj1进行改变,则obj的值也会发生改变。

2、深拷贝

把一个对象中所有的属性或者方法,依次找到,并且在另一个对象中开辟相应的空间,依次的存储到另一个对象中,这句话可能不太好理解。简单点说,深拷贝之后,两个对象之间有共同的属性或者方法,但是它们各自指向各自空间(指向不同)。如果是深拷贝,一旦obj对象中含有引用值,拷贝之后,如果对obj1进行改变,则obj的值不会进行改变。

 

js基础十-- 克隆(拷贝)

上一篇:SAP Web Dynpro-监视应用程序


下一篇:3Sum