在Array.prototype中获取调用者

时间:2013-08-14 12:23:10

标签: javascript

我这样做

Array.prototype.foo = function (){
  return this.concat(this);
};

a = [1,2,3];
a.foo(); 
a; // [1,2,3,1,2,3]

如何在Array.prototype.foo中定义变量? 如果我尝试像这样的somtehing:

this = this.concat(this)

我收到错误消息:

“ReferenceError:赋值中的左侧无效”

2 个答案:

答案 0 :(得分:2)

您无法指定this keyword。要更改当前对象,必须通过更改其属性来修改它。

Array.prototype.foo = function (){
    Array.prototype.push.apply(this, this);
    return this;
};

a = [1,2,3];
a.foo(); 
a; // [1,2,3,1,2,3]

您当前的代码return新实例,您需要重新分配到a

答案 1 :(得分:0)

您无法指定“此”。您可以为“a”变量指定一个新值。

Array.prototype.foo = function (){
 return this.concat(this);
};

a = [1,2,3];
a = a.foo();
console.log(a);