我想用自定义方法扩展Function.prototype:
Function.prototype.myMethod = function() {
var fn = this;
var owner = ???;
/** ... */
};
该范围中的 this
指的是原始函数。但是如何访问引用“拥有”该函数的对象的this
(或者this
被调用时fn
外的{{1}}?
答案 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