访问Function.prototype中的两个'this'变量

时间:2011-06-03 15:04:49

标签: javascript function this prototype-programming

我想用自定义方法扩展Function.prototype:

Function.prototype.myMethod = function() {
     var fn = this;
     var owner = ???;
     /** ... */
};
该范围中的

this指的是原始函数。但是如何访问引用“拥有”该函数的对象的this(或者this被调用时fn外的{{1}}?

2 个答案:

答案 0 :(得分:1)

您需要将其作为参数传递给函数调用...不确定这是否可以在您的特定用途中使用。

myMethod(this);

function myMethod( parent ) {
    // ...

答案 1 :(得分:0)

SpiderMonkey和JScript在Function-objects上实现了非标准的“调用者”属性。我不知道其他浏览器的支持程度。

我相信它应该是这样的:

Function.prototype.myMethod = function() {
   var fn = this;
   var owner = this.caller;
   /** ... */
};

但尚未测试过。正如我所说,它不是ECMA标准的一部分。

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/Caller