`
happyqing
  • 浏览: 3183748 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

js深度克隆对象

    博客分类:
  • js
阅读更多

js深度克隆对象

用js实现对象克隆最关键的两点就是:var objClone = new this.constructor();和objClone[key] = this[key].Clone();。一个实现相同对象创建,一个实现深度克隆。
Object.prototype.Clone = function(){ 
var objClone; 
if (this.constructor == Object){ 
objClone = new this.constructor(); 
}else{ 
objClone = new this.constructor(this.valueOf()); 
} 
for(var key in this){ 
if ( objClone[key] != this[key] ){ 
if ( typeof(this[key]) == ‘object’ ){ 
objClone[key] = this[key].Clone(); 
}else{ 
objClone[key] = this[key]; 
} 
} 
} 
objClone.toString = this.toString; 
objClone.valueOf = this.valueOf; 
return objClone; 
}
 不用原型方式实现,万一哪天浏览器厂商一更新可能就会有原生的Clone方法了,只写个方法
function clone(obj){ 
var objClone; 
if (obj.constructor == Object){ 
objClone = new obj.constructor(); 
}else{ 
objClone = new obj.constructor(obj.valueOf()); 
} 
for(var key in obj){ 
if ( objClone[key] != obj[key] ){ 
if ( typeof(obj[key]) == ‘object’ ){ 
objClone[key] = clone(obj[key]); 
}else{ 
objClone[key] = obj[key]; 
} 
} 
} 
objClone.toString = obj.toString; 
objClone.valueOf = obj.valueOf; 
return objClone; 
}
  
分享到:
评论

相关推荐

    JavaScript浅层克隆与深度克隆示例详解

    JavaScript中的浅层克隆与深度克隆是两种不同的对象复制方式,它们主要处理对象和数组这类引用类型的数据。这两种克隆方法的区别在于处理对象内部引用值的方式,即对堆内存中对象的复制程度。 1. **浅层克隆**: ...

    JS对象深度克隆实例分析

    JavaScript中的对象深度克隆是一种创建新对象的过程,这个新对象完全复制了原始对象的所有属性,包括嵌套的对象和数组,而不会与原始对象共享引用。这意味着对克隆对象的任何修改都不会影响原始对象。在JavaScript中...

    一个用于对象深度克隆的同构和可配置javascript函数

    标题提到的"一个用于对象深度克隆的同构和可配置javascript函数"是指一个能够在浏览器环境和Node.js环境中通用(同构)的JavaScript函数,它提供了一种灵活的方式来深度复制复杂的数据结构,同时允许用户根据需求...

    JS对象的深度克隆方法示例

    在描述的示例中,提供了两种实现JavaScript深度克隆的方法。 ### 方法1:递归遍历复制 这种方法通过遍历对象的每个属性,如果属性是对象类型,就递归调用自身进行克隆。以下是具体的实现: ```javascript ...

    深度克隆的事例代码

    在JavaScript中,我们可以使用JSON对象的`parse()`和`stringify()`方法来实现深度克隆: ```javascript function deepClone(obj) { return JSON.parse(JSON.stringify(obj)); } ``` 这种方法简单易用,但不适用于...

    nanoclone只有145B实现深度克隆JavaScript对象

    标题提到的"nanoclone"是一个极简的JavaScript库,其核心代码只有145字节,但能实现深度克隆功能。这在追求轻量级解决方案的场景下显得尤为宝贵。 在JavaScript中,有多种实现深拷贝的方法。例如,可以使用JSON的...

    js深度克隆(解决引用问题).txt

    本文档是解决 引用问题的解决方案,它不仅可以解决引用值拷贝 ,还可以原样复制一个一摸一样的数组、对象包括其中的方法。

    JavaScript对象之深度克隆介绍

    在开发中,深度克隆对象的原因通常是为了保持原始数据的完整性,避免因修改克隆后的对象而导致原始数据的意外变更。例如,当你想要创建一个用户配置对象的副本,以便在不改变用户原始设置的情况下进行操作,或者在...

    一行代码实现纯数据json对象的深度克隆实现思路

    在JavaScript中,深度克隆指的是创建一个新对象,其内容完全复制自源对象,包括所有嵌套的对象和数组。在处理复杂的数据结构时,深度克隆尤为重要,因为它能确保源对象不受目标对象的修改影响。标题提到的"一行代码...

    javascript克隆对象深度介绍

    通过深度克隆得到的新对象与其原始对象在内存中完全独立,对新对象的任何修改都不会影响到原始对象。 在JavaScript中,实现深度克隆通常有以下几种方式: 1. 递归函数克隆:这是一种通用的方法,可以通过递归的...

    javascript浅层克隆、深度克隆对比及实例解析

    在JavaScript中,克隆对象是一项常见的任务,主要是为了创建一个对象的新副本,而不改变原始对象。根据克隆的深度,可以分为浅层克隆和深度克隆,它们在处理复杂数据结构时有不同的行为。 1、浅层克隆: 浅层克隆只...

    js代码-javascript深度克隆

    JavaScript深度克隆是一种在编程中复制对象或数组的方式,它不仅复制了对象的表面属性,还复制了嵌套的对象和数组。在JavaScript中,浅拷贝(shallow copy)只复制对象的引用,而深度克隆(deep clone)会创建一个...

    js对象实例详解(JavaScript对象深度剖析,深度理解js对象)

    4、对象的深度克隆 5、一些Object的方法与需要注意的点 6、ES6新增特性 下面反复提到实例对象和原型对象,通过构造函数 new 出来的本文称作 实例对象,构造函数的原型属性本文称作 原型对象。 创建对象 字面量的方式...

    js-object-clone:深度克隆并与ES5属性描述符和对象可扩展性支持进行比较

    对象克隆ES5的深克隆和比较概要// just for conveniencevar log = function ( ) { console . log . apply ( console , [ ] . slice . call ( arguments ) ) } ; var src = { name : 'dankogai' , lang : [ 'perl' ] ...

    javascript中clone对象详解.docx

    在JavaScript中,克隆对象是一项常见的任务,尤其是在处理复杂的数据结构时。克隆对象的目的是创建一个与原对象具有相同属性和值的新对象,但两者之间没有引用关系,即修改克隆对象不会影响原始对象。在JavaScript中...

Global site tag (gtag.js) - Google Analytics