前军教程网

中小站长与DIV+CSS网页布局开发技术人员的首选CSS学习平台

JavaScript中如何实现对象的深拷贝

点击右上方红色按钮关注“小郑搞码事”,每天都能学到知识,搞懂一个问题!

本文目的在于分享几段代码。

一些关于对象深拷贝的事情。先是代码实现,后是方法处理。

关于对象的拷贝,如果直接对对象进行拷贝,由于其是引用类型值,因此,会进行浅拷贝。实现思路是逐项对对象的属性进行拷贝,由于对象的属性值是基本类型值,因此,逐项对对象的属性进行拷贝,可以实现对象的深拷贝。

1. 对象的深拷贝代码实现

先来看一段继承的代码。

上面代码,使用prototype属性实现了两个类的继承。也就是Test上的属性就是ChilrTest原型属性。

接着用一个forin语句,将所有的属性打印出来。这里包括:name,age,run,sing。

如果不希望打印出继承而来的属性值,可以使用下面这段代码。用hasOwnProperty加个判断。

这样,打印出来的属性就不包括继承而来的属性。包括:name,age, sing。

对象的深拷贝代码也就简单了,如下:

可以看出,拷贝后的对象cloneObject和源例是完全独立的。

2. 利用JSON的parse/stringify方法

利用JSON的parse/stringify序列方法来处理对象的深拷贝问题是比较简单的一种方式。如下代码所示。

拷贝后的对象target和源对象source是完全独立的。

总结一下:

到目前为止,我简单分享过了数组和对象的深拷贝问题。这些都是假设数据类型是单一的数组/纯对象的前提下。实际情况下,它可能的类型有Boolean,Number......。这就需要我们自己去写一个复制的方法。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言