如何区分JavaScript中的深拷贝与浅拷贝?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1636个文字,预计阅读时间需要7分钟。
目录 + 浅拷贝 + 深拷贝 + 补充 + 总结 + 拷贝(又称克隆,包括复制等)+ 分为深拷贝和钱拷贝。实际上,这个问题有时候想传达就很简单,如果不想传达可能会有些绕,但并不比理解封装等概念更难。
目录
- 浅拷贝
- 深拷贝
- 补充
- 总结
拷贝(又名克隆,复制等),但是又分深拷贝和钱拷贝。
其实这个问题有时候想通了就很简单,如果想不通可能会有点绕,不过其难度比闭包等好理解的多。
为什么又这个概念的存在呢?先举一个例子。
var person={ name:"张三", age:22 } var person1=person; console.log(person); console.log(person1);
似乎可以被拷贝下来了,但是如果你操作person1的属性值,这个时候person属性值也会改变。
person1.name="李四"; console.log(person); console.log(person1);
其实这个很容易理解,那就是上面只是两个对象的指针地址都是指向栈内存的相同位置,前面讲解引用数据类型的时候讲解过何为引用数据类型。
本文共计1636个文字,预计阅读时间需要7分钟。
目录 + 浅拷贝 + 深拷贝 + 补充 + 总结 + 拷贝(又称克隆,包括复制等)+ 分为深拷贝和钱拷贝。实际上,这个问题有时候想传达就很简单,如果不想传达可能会有些绕,但并不比理解封装等概念更难。
目录
- 浅拷贝
- 深拷贝
- 补充
- 总结
拷贝(又名克隆,复制等),但是又分深拷贝和钱拷贝。
其实这个问题有时候想通了就很简单,如果想不通可能会有点绕,不过其难度比闭包等好理解的多。
为什么又这个概念的存在呢?先举一个例子。
var person={ name:"张三", age:22 } var person1=person; console.log(person); console.log(person1);
似乎可以被拷贝下来了,但是如果你操作person1的属性值,这个时候person属性值也会改变。
person1.name="李四"; console.log(person); console.log(person1);
其实这个很容易理解,那就是上面只是两个对象的指针地址都是指向栈内存的相同位置,前面讲解引用数据类型的时候讲解过何为引用数据类型。

