欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JavaScript的浅拷贝

程序员文章站 2024-01-03 13:12:52
...

什么是浅拷贝?

只针对当前对象的属性进行的拷贝叫浅拷贝

注:拷贝简单来说就是对象数据的复制,对象引用的复制不叫拷贝.

var o={name:"小陈".age:18};
var p=o;//这不是任何拷贝

在讨论深浅拷贝时,一定要考虑对象的属性是不是引用类型

浅拷贝的代码实现
var car={name:"奇瑞qq"};
var student={name:"小陈",age:18,car:car};
var lightCopy={};
lightCopy.name=student.name;
lightCopy.age=student.age;
lightCopy.car=student.car;

流程图如下:
JavaScript的浅拷贝
为什么是浅拷贝?

因为从上图中很容易看出lightCopy.car存放的对象的引用地址和student.car指向的是同一个car对象,即lightCopy和student对象并未完全从内存中独立,他们两者还有牵连,谁修改car对象都会引起另一个对象中的car对象发生变化,所以是浅拷贝

进一步升级代码
  • 利用面向对象的思想,让对象有一个shallowCopy方法,完成浅拷贝
var car={name:"奇瑞qq"};
var p={
    name:"小陈";
    age:18;
    sex:"男";
    car:car;
    shallowCopy:function(){
        var temp={};
        for(var k in this){
            temp[k]=this[k];
        }
        return temp;
    }
}
var copyStudent=p.shallowCopy();

好了,是时候看看啥是深拷贝了,点此传送什么深拷贝

上一篇:

下一篇: