【发布时间】:2011-06-03 15:04:49
【问题描述】:
我想用自定义方法扩展 Function.prototype:
Function.prototype.myMethod = function() {
var fn = this;
var owner = ???;
/** ... */
};
this 在该范围内指的是原始函数。但是我如何访问引用“拥有”该函数的对象的this(或者在调用fn时外部this是什么)?
【问题讨论】:
-
我认为您无法知道它,因为您实际上并没有调用“原始”函数。无法知道函数是否分配给属性。你想做什么?也许有比扩展
Function.prototype更好的方法。 -
我正在尝试执行以下操作:
Function.prototype.future = function() { var fn = this; var owner = ???; return fn.bind(owner, arguments); }; -
没有“两个
this变量”。您唯一的选择是将其作为参数传入。 -
我认为
fn.bind.apply(owner)不会像您期望的那样工作(如果owner不是函数)。它仍然没有解释你的实际目标是什么。到目前为止,我只能假设扩展Function.prototype不是正确的方法。 -
在这种情况下,我的目标是让从一个函数和一组参数中创建期货/承诺变得容易。结果可用于惰性求值。但可能还有其他应用程序。
标签: javascript function this prototype-programming