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;
流程图如下:
为什么是浅拷贝?
因为从上图中很容易看出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();
好了,是时候看看啥是深拷贝了,点此传送什么深拷贝
推荐阅读
-
JavaScript的浅拷贝
-
jQuery及JS实现循环中暂停的方法_javascript技巧
-
JavaScript全总结之DOM的Element
-
JavaScript实用库:Lodash源码数组函数解析(十一)without以及很多我没详戏记细过的
-
javascript - 下拉框change事件能在初始化的时候调用吗?
-
JavaScript面向对象(4)——最佳继承模式(从深拷贝、多重继承、构造器借用,到组合寄生式继承)
-
有关JavaScript中浅拷贝、深拷贝的简单研究
-
如何写JS数组sort的比较函数_javascript技巧
-
Jquery对象与JavaScript DOM之间的相互转化教程
-
JavaScript 是如何工作的:JavaScript 的内存模型