【发布时间】:2012-03-13 01:13:10
【问题描述】:
我正在尝试创建一个复制数组数组的函数。我试过 blah.slice(0);但它只复制参考。我需要制作一个保持原件完好无损的副本。
我在http://my.opera.com/GreyWyvern/blog/show.dml/1725165找到了这个原型方法
Object.prototype.clone = function() {
var newObj = (this instanceof Array) ? [] : {};
for (i in this) {
if (i == 'clone') continue;
if (this[i] && typeof this[i] == "object") {
newObj[i] = this[i].clone();
} else newObj[i] = this[i]
} return newObj;
};
它可以工作,但是弄乱了我正在使用的一个 jQuery 插件——所以我需要将它变成一个函数……递归并不是我最擅长的。
您的帮助将不胜感激!
干杯,
【问题讨论】:
-
请务必使用
var声明“i”!此外,使用for ... in循环遍历数组也是有风险的——使用数字索引更安全。
标签: javascript