我想写一些这样的话:
Array.prototype.copy(obj_or_array) {
if (obj_or_array instanceof Array)
this.array = this.concat ( obj_or_array.slice());
else
for(var key in obj_or_array) {this.push(obj_or_array[key]);}
}
' this.array'不存在,但我想拥有它。 任何的想法 ?这不可能吗?
答案 0 :(得分:0)
这是使用您问题中的方法克隆数组的最简单方法:
if (!('copy' in Array.prototype)) {
Array.prototype.copy = function() {
return this.slice(0);
}
}
var arr = [1, 2, 3, 4];
var arr2 = arr.copy();
And if your objects are always going to be simple(即他们没有任何方法),你可以使用这样的东西:
if (!('copy' in Object.prototype)) {
Object.prototype.copy = function() {
return JSON.parse(JSON.stringify(this));
}
}
var obj = { name: 'andy' };
var obj2 = obj.copy();
答案 1 :(得分:-1)
这样的东西?
//Error checking and other stuff omitted this is only an EXAMPLE of an IDEA :)
Array.prototype.loadData = function (a)
{
if(a instanceof Array)
for(var i =0; i<a.length; i++)
this.push(a[i]);
else if(a instanceof Object)
for(var i in a)
this.push(a[i]);
}