JavaScript中如何对一个对象进行深度clone
2014-02-26 15:55
351 查看
JavaScript中如何对一个对象进行深度clone
方法1:
这是网上摘抄的代码,实在有一句看不懂
这里为何只克隆非原型里面的对象。一个对象的原型属性,该对象也能访问,所以应该连原型也一起克隆。
最后代码为:
function cloneObject(obj){
if(!obj || 'object' !== typeof obj){
return obj;
}
var o = obj.constructor === Array ? [] : {};
for(var i in obj){
//if(obj.hasOwnProperty(i)){
o[i] = typeof obj[i] === "object" ? cloneObject(obj[i]) : obj[i];
//}
}
return o;
}
方法2:
方法1:
function cloneObject(obj){ if(!obj || 'object' !== typeof obj){ return obj; } var o = obj.constructor === Array ? [] : {}; for(var i in obj){ if(obj.hasOwnProperty(i)){ o[i] = typeof obj[i] === "object" ? cloneObject(obj[i]) : obj[i]; } } return o; }
这是网上摘抄的代码,实在有一句看不懂
if(obj.hasOwnProperty(i)){ o[i] = typeof obj[i] === "object" ? cloneObject(obj[i]) : obj[i]; }
这里为何只克隆非原型里面的对象。一个对象的原型属性,该对象也能访问,所以应该连原型也一起克隆。
最后代码为:
function cloneObject(obj){
if(!obj || 'object' !== typeof obj){
return obj;
}
var o = obj.constructor === Array ? [] : {};
for(var i in obj){
//if(obj.hasOwnProperty(i)){
o[i] = typeof obj[i] === "object" ? cloneObject(obj[i]) : obj[i];
//}
}
return o;
}
方法2:
var s = JSON.stringify( obj ); var o = JSON.parse( s );
相关文章推荐
- JavaScript中如何对一个对象进行深度clone
- JavaScript中一个对象进行深度clone
- JavaScript中对象进行深度clone,url参数解析
- 如何深度复制一个javascript对象
- javascript如何将一个字符串转换成对象类型
- JavaScript中如何知道一个对象里面的全部属性
- 实现一个函数clone,使JavaScript中的5种主要的数据类型(包括Number、String、Object、Array、Boolean)进行值复制
- JavaScript如何创建一个对象
- JavaScript对象数组如何按指定属性和排序方向进行排序
- javascript 深度克隆(深度拷贝一个对象) prototype __ptoto__ consstructor
- JavaScript 如何判断一个对象{}是否为空对象
- JavaScript Core -- 如何创建一个对象
- Java中如何把一组对象按照其某一个属性值进行排序?
- javascript深度克隆一个对象
- Javascript如何判断一个变量是普通变量还是数组还是对象?
- JavaScript中一个对象如何继承另外一个对象
- 面试题---实现一个函数clone,可以对JavaScript中的5种主要的数据类型(包括Number、String、Object、Array、Boolean)进行值复制。
- 在JAVASCRIPT中构建一个复杂的对象,并用JSON进行转换
- JavaScript 中的对象深度复制(Object Deep Clone)
- JavaScript中如何将一个字符串,转换成一个对象类型