步骤:
- 判断是不是原始值 (typeof() 如果不是obj基本上就是原始值)
- 判断是数组还是对象 (使用 instanceof toString constructor推荐使用toString)
- 建立相应的数组或者对象
例子:将obj拷贝到obj1中去
var obj = {
name : "abc",
age : 123,
card : ["hahoa", "mastrek"],
wife : {
name : "bcd",
son : {
name : "aaa"
}
}
}
var obj1 = {
}
function deepClone(origin,target){
var target = target || {}, //判断是否有值传入
toStr = Object.prototype.toString,
arrStr = '[object Array]';
for(var prop in origin){
if (origin.hasOwnProperty(prop)){
if(origin[prop] !== null && (typeof(origin[prop])) === 'object'){
if(toString.call(origin[prop]) === arrStr){
target[prop] = [];
}else{
target[prop] = {};
}
deepClone(origin[prop],target[prop]);
}else{
target[prop] = origin [prop];
}
}
}
return target;
}


本文深入探讨了JavaScript中深拷贝的实现方法,通过一个具体示例详细讲解了如何递归复制对象和数组,确保原始数据与拷贝数据完全独立。
499

被折叠的 条评论
为什么被折叠?



