首页
   /       /   
对象的引用-浅拷贝-深拷贝
2月
27
对象的引用-浅拷贝-深拷贝
作者: 大彭Sir    分类: 教学教程     正在检查是否收录...

对象引用-浅拷贝与深拷贝

对象的引用 - 浅拷贝与深拷贝

在JavaScript中,我们经常会用到一些对象,比如数组、字典、函数来保存我们的数据,这些对象有时候需要被复制。今天我们就来看一下什么是对象引用,什么叫浅拷贝,什么叫深拷贝

对象引用

在JavaScript中,一般对象是通过引用(reference)存储的,也就是每一个变量都指向一个地址,这个地址包含了对象创建时候的所有属性等信息,而多个变量指向同一个地址,它们都是指向引用,所以也叫引用。

换句话说,当我们想要拷贝一个对象的时候,只拷贝这个对象的引用,也就是说复制的对象只是指向同一个地址,它们拥有相同的属性和方法,这就叫引用传递(reference passing)

浅拷贝

浅拷贝是指拷贝了一个对象的引用,但是这个引用并没有真正拷贝这个对象内部的数据,所以复制的对象拥有的属性和方法是同一个,可以通过Object.assign实现浅拷贝。

例子:

let a = { name: 'Bob' };
let b = Object.assign({}, a); // 浅拷贝

a.name = 'John';
console.log(b.name); // "John"

深拷贝

深拷贝是指拷贝了一个对象的数据,而不是拷贝一个引用,复制的对象拥有完全独立的属性和方法,可以使用JSON.parse(JSON.stringify())实现深拷贝。

例子:

let a = { name: 'Bob' };
let b = JSON.parse(JSON.stringify(a)); // 深拷贝

a.name = 'John';
console.log(b.name); // "Bob"

总结

我们在实际的开发中,经常会遇到拷贝引用的情况,这时候为了不影响原有的数据,就需要拷贝真正的数据,不要仅仅引用同一个数据,让我们学会使用浅拷贝和深拷贝来拷贝数据。

本文标签: 标签: javaScript 深拷贝 浅拷贝
责任声明:本页信息由网友自行发布或来源于网络,真实性、合法性由发布人负责,请仔细甄别!本站只为传递信息,我们不做任何双方证明,也不承担任何法律责任。文章内容若侵犯你的权益,请联系本站删除!
转载声明:本文作者 大彭Sir,如需转载请保留文章出处!原文链接请自行复制!

评论

Theme By Brief 鄂ICP备19010459号

sitemap

首页

分类

友链