读书人

深拷贝函数,该怎么解决

发布时间: 2013-07-16 22:38:04 作者: rapoo

深拷贝函数

/* 深拷贝 */
function extendDeep(parent, child) {
var i,
toStr = Object.prototype.toString,
astr = "[object Array]";

child = child || {};

for (i in parent) {
if (parent.hasOwnProperty(i)) {
if (typeof parent[i] === 'object') {
child[i] = (toStr.call(parent[i]) === astr) ? [] : {};
extendDeep(parent[i], child[i]);
} else {
child[i] = parent[i];
}
}
}
return child;
}

var dad = {
counts: [1, 2, 3],
reads: { paper: true }
};

var kid = extendDeep(dad);
kid.counts.push(4);
console.log(kid.counts.toString()); // "1,2,3,4"
console.log(dad.counts.toString()); // "1,2,3"

console.log(dad.reads === kid.reads); // false

kid.reads.paper = false;


child[i] = (toStr.call(parent[i]) === astr) ? [] : {};这句话有什么用

深拷贝作用是什么
[解决办法]
判断child[i]是数组还是对象

深拷贝相对于浅拷贝能解决更多问题

读书人网 >JavaScript

热点推荐