首页 > Web开发 > 详细

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

时间:2021-04-16 18:06:59      阅读:18      评论:0      收藏:0      [点我收藏+]

一、克隆(拷贝)

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

打印结果如下:

技术分享图片

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

2、深拷贝

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

 

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

原文:https://www.cnblogs.com/kkw-15919880007/p/14666416.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!