如何将整个数组对象访问到array.prototype中

时间:2015-01-14 11:00:38

标签: javascript

我想写一些这样的话:

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'不存在,但我想拥有它。 任何的想法 ?这不可能吗?

2 个答案:

答案 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();

DEMO

答案 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]);
}