在做一个前台页面你的时候用到了一个自己写的List对象,在进行深拷贝的时候参考了网上的代码:
一、
var util = {
clone : function(obj) {
if (typeof (obj) != 'object')
return obj;
var re = {};
if (obj.constructor==Array)
re = [];
for ( var i in obj) {
re[i] = util.clone(obj[i]);
}
return re;
}
};
二、
//对象和数组的深拷贝
Object.clone = function(sObj){
if(typeof sObj !== "object"){
return sObj;
}
var s = {};
if(sObj.constructor == Array){
s = [];
}
for(var i in sObj){
s[i] = Object.clone(sObj[i]);
}
return s;
}
//对象扩展,tObj被扩展对象,sObj扩展对象
Object.extend = function(tObj,sObj){
for(var i in sObj){
if(typeof sObj[i] !== "object"){
tObj[i] = sObj[i];
}else if (sObj[i].constructor == Array){
tObj[i] = Object.clone(sObj[i]);
}else{
tObj[i] = tObj[i] || {};
Object.extend(tObj[i],sObj[i]);
}
}
}
测试用例:
var a = {};
var b = {"a":1,
"b":{"c":function(t){
alert(t);
}
},
"d":{"e":2,
"f":[1,4,5,7,9]
}
};
Object.extend(a,b);//a获得了b的所有属性
三、说明:
我自己定义的list中没有定义constructor,所以执行sObj.constructor == Array会报错,我就修改为:
//对象和数组的深拷贝
Object.clone = function(sObj){
if(typeof sObj !== "object"){
return sObj;
}
var s = {};
if(sObj.constructor == Array){
s = [];
}
for(var i in sObj){
s[i] = Object.clone(sObj[i]);
}
return s;
}
原文链接:http://www.footya.com/?action=show&id=123
分享到:
相关推荐
"最专业的深拷贝JS库"是一个专门用于实现JavaScript对象深拷贝的工具库。这个库采用了递归的方式来处理深拷贝,递归是一种自上而下解决问题的方法,当遇到复杂的数据结构,如嵌套的对象或数组时,递归可以有效地一...
js考虑最完善的深拷贝函数,可以深拷贝引用对象和基本对象
在JavaScript中,数组的深拷贝是一个常见的需求,它涉及到数据结构的复制,尤其是在处理复杂对象和嵌套数据时。深拷贝与浅拷贝不同,浅拷贝只是复制引用,而深拷贝会创建一个新的对象,包含原始数组的所有元素,并...
对多维数组,对象,进行去重,相同的值只保留一个,常见的new Set()和filter,只能去重一维数组,并不能进行深层的去重,逻辑:判断是否为对象,为对象判断是否为数组或是真的对象,递归一直筛选为值,判断首次...
本文为大家分享了JavaScript对象的浅拷贝和深拷贝代码,供大家参考,具体内容如下 1.浅拷贝 拷贝就是把父对像的属性,全部拷贝给子对象。 下面这个函数,就是在做拷贝: var Chinese = { nation:'中国' } var ...
JS 深拷贝与浅拷贝详解以及例子 深拷贝与浅拷贝是 JavaScript 开发中常见的概念,分别对应着不同的拷贝方式。在本文中,我们将详细介绍浅拷贝和深拷贝的概念、特点、实现方法和实例。 一、浅拷贝 浅拷贝只拷贝一...
主要介绍了JS使用JSON.parse(),JSON.stringify()实现对对象的深拷贝功能,结合实例形式分析了JSON.parse()与JSON.stringify()方法实现深拷贝的相关实现技巧与操作注意事项,需要的朋友可以参考下
JavaScript中的深拷贝和浅拷贝是编程面试中常见的概念,尤其在处理对象和数组时至关重要。它们主要涉及的是变量赋值时数据的复制方式。简单来说,浅拷贝是创建了一个新对象,但它的属性仍然是对原对象属性的引用,而...
这篇博客“浅拷贝深拷贝之jQuery中的$.extend分析”深入探讨了`$.extend`在浅拷贝和深拷贝场景下的工作原理,这对于理解JavaScript对象的复制机制至关重要。 浅拷贝是指创建一个新对象,然后将源对象的引用属性复制...
深拷贝和浅拷贝是JavaScript中处理对象和数组复制的两种基本方法。选择使用哪一种取决于具体的需求和场景。浅拷贝适用于简单的数据结构,而深拷贝适用于需要完全独立副本的复杂数据结构。了解它们的工作原理和实现...
javascript中数组深拷贝途径及对象数组深拷贝 什么是浅拷贝 在js当中,我们常常遇到数组复制的的情况,许多人一般都会使用“=”来直接把一个数组赋值给一个变量,如: var a=[1,2,3]; var b=a; console.log(b); ...
本文实例讲述了JS赋值、浅拷贝和深拷贝(数组和对象的深浅拷贝)。分享给大家供大家参考,具体如下: 深拷贝和浅拷贝是只针对Object和Array这样的引用数据类型的。 浅拷贝 只是拷贝了基本类型的数据,而引用类型...
2. 手写深拷贝函数:可以通过递归遍历对象的每个属性,如果属性是对象,则继续调用深拷贝函数,从而实现深拷贝。这种方法可以处理更复杂的对象结构,但效率较低。 3. 使用第三方库如lodash的`_.cloneDeep()`:这类库...
JavaScript中的对象拷贝是编程中... 总之,理解JavaScript中的浅拷贝和深拷贝非常重要,因为它们直接影响到对象的复制行为和数据的独立性。在实际开发中,选择适当的拷贝策略可以避免意外的副作用,确保程序的正确性。
本文实例讲述了javascript二维数组和对象的深拷贝与浅拷贝。分享给大家供大家参考,具体如下: 这篇文章主要为大家详细介绍了js实现数组和对象的深浅拷贝, 1.浅拷贝: 将原对象或原数组的引用直接赋给新对象,新...
总结一下,"deep-copy-ts"是一个专门针对typescript和javascript的深拷贝工具,它实现了递归深拷贝和浅拷贝功能,适用于处理复杂的对象和数组结构,同时兼容两种语言。通过使用这个库,开发者可以更轻松地管理对象的...
本篇文章将深入探讨如何基于遍历操作实现JavaScript对象的深拷贝。 首先,我们需要一个函数来确定变量的类型。在提供的代码中,`getType` 函数用于获取传入对象的类型,考虑到了 `typeof` 的特殊情况,如数组和null...
总结来说,`for...in`循环和对象深拷贝是JavaScript中处理对象属性和复制对象的重要手段。理解它们的工作原理,能够帮助开发者更好地管理和操作JavaScript对象,避免因数据共享导致的意外问题。在实际编程中,根据...
在JavaScript中,深拷贝和浅拷贝是两种常见的数据复制方法。它们之间的区别和应用场景是编程中的重要知识点。本文将深入探讨JavaScript中的深拷贝,包括它的概念、实现方式以及适用场景。 **深拷贝的概念** 深拷贝...
本文实例讲述了JavaScript深拷贝和浅拷贝概念与用法。分享给大家供大家参考,具体如下: js中的浅拷贝和深拷贝,只是针对复杂数据类型(Objcet,Array)的复制问题。简单来讲浅拷贝和深拷贝都可以实现在原有对象的基础...