美文网首页
JavaScript复制对象

JavaScript复制对象

作者: Duozi | 来源:发表于2017-12-12 15:08 被阅读0次

首先,为了创建一个对象完全相同的拷贝,需要确保两件事情:

1. 拷贝必须具有与原对象相同的原型

2. 拷贝必须具有与原对象相同的属性和特性。

function copyObject (orig) {

//1. 具有相同的原型

var copy= Object.create(Object.getPrototypeOf(orig));

// 2. 具有相同的属性和特性

copyOwnPropertiesFrom(copy, orig);

return copy;

}

//属性复制

function copyOwnPropertiesFrom(target, source) {

Object.getOwnPropertyNames(source)//(1)

. forEach(function (propKey) {//(2)

var desc = Object.getOwnPropertyDescriptor(source, propKey); //(3)

Object.defineProperty(target, propKey, desc); //(4)

});

return target;

}

步骤如下:

(1) 获得 source 所有自由属性的数组。

(2) 遍历这些键。

(3) 获取属性描述符

(4) 使用属性描述符创建 target 的自有属性

相关文章

  • JavaScript复制对象

    首先,为了创建一个对象完全相同的拷贝,需要确保两件事情: 1. 拷贝必须具有与原对象相同的原型 2. 拷贝必须具有...

  • JavaScript复制对象

    在JavaScript这门语言中,数据类型分为两大类:基本数据类型和复杂数据类型。基本数据类型包括Number、B...

  • 原生JavaScript对象复制

    简单深度复制 对象合并或者称为浅复制(对象只是复制应用,原对象改变会影响新对象,新对象改变不会影响原来的对象) 高...

  • 浅拷贝与深拷贝

    前言 在 javascript 中有不同的方法来复制对象,如果你还不熟悉这门语言的话,复制对象时就会很容易掉进陷阱...

  • 浅谈对象

    1、复制对象JavaScript初学者最常见的问题之一就是如何复制一个对象。思考一下这个对象: 如何准确的表示my...

  • javascript 对象的深度复制

    在组件直接的通讯中,我们经常需要传递复杂的数据对象data,如果接收的组件直接对data进行处理,其处理结果将是发...

  • JavaScript对象的深复制

    js的数据类型可以分为两大类: 值类型(原始类型):比如String、Number类型都是值类型。 引用类型:比如...

  • 详解js中对象的深浅拷贝

    在JavaScript中,对对象进行拷贝的场景比较常见。但是简单的复制语句只能对对象进行浅拷贝,即复制的是一份引用...

  • JavaScript中的对象复制(Object Clone)

    JavaScript中并没有直接提供对象复制(Object Clone)的方法。因此下面的代码中改变对象b的时候,...

  • React 数据为什么要使用immutable方式?

    深复制与浅复制 因为JavaScript存储对象都是存地址的,所以浅复制会导致 obj 和 obj1指向同一块内存...

网友评论

      本文标题:JavaScript复制对象

      本文链接:https://www.haomeiwen.com/subject/emhnixtx.html