Javascript 访问两个';这';Function.prototype中的变量
我想用自定义方法扩展Function.prototype:Javascript 访问两个';这';Function.prototype中的变量,javascript,function,this,prototype-programming,Javascript,Function,This,Prototype Programming,我想用自定义方法扩展Function.prototype: Function.prototype.myMethod = function() { var fn = this; var owner = ???; /** ... */ }; 该范围内的此指原始功能。但是如何访问引用“拥有”函数的对象的this(或者调用fn时外部this是什么?您需要将其作为参数传递给函数调用。。。不确定这在您的特定用途中是否可行 myMethod(this); function m
Function.prototype.myMethod = function() {
var fn = this;
var owner = ???;
/** ... */
};
该范围内的此
指原始功能。但是如何访问引用“拥有”函数的对象的this
(或者调用fn
时外部this
是什么?您需要将其作为参数传递给函数调用。。。不确定这在您的特定用途中是否可行
myMethod(this);
function myMethod( parent ) {
// ...
您需要将其作为参数传递给函数调用。。。不确定这在您的特定用途中是否可行
myMethod(this);
function myMethod( parent ) {
// ...
SpiderMonkey和JScript在函数对象上实现了一个非标准的“调用者”属性。我不知道其他浏览器的支持程度 我相信它应该是这样的:
Function.prototype.myMethod = function() {
var fn = this;
var owner = this.caller;
/** ... */
};
但我还没有测试过。正如我所说,它不是ECMA标准的一部分
SpiderMonkey和JScript在函数对象上实现了一个非标准的“调用者”属性。我不知道其他浏览器的支持程度 我相信它应该是这样的:
Function.prototype.myMethod = function() {
var fn = this;
var owner = this.caller;
/** ... */
};
但我还没有测试过。正如我所说,它不是ECMA标准的一部分
我认为您不可能知道,因为您实际上没有调用“原始”函数。无法知道函数是否已分配给属性。你想干什么?也许有比扩展
Function.prototype
更好的方法。我正在尝试以下操作:Function.prototype.future=Function(){var fn=this;var owner=?;return fn.bind(owner,arguments);}代码>没有“两个this
变量”。您唯一的选择是将其作为参数传入。我认为fn.bind.apply(owner)
不会像您期望的那样工作(如果owner
不是一个函数)。它仍然不能解释你的实际目标是什么。到目前为止,我只能假设扩展Function.prototype
不是正确的方法。在这种情况下,我的目标是很容易用函数和一组参数创建未来/承诺。结果可用于延迟评估。但可能还有其他应用程序。我想你不知道,因为你实际上没有调用“原始”函数。无法知道函数是否已分配给属性。你想干什么?也许有比扩展Function.prototype
更好的方法。我正在尝试以下操作:Function.prototype.future=Function(){var fn=this;var owner=?;return fn.bind(owner,arguments);}代码>没有“两个this
变量”。您唯一的选择是将其作为参数传入。我认为fn.bind.apply(owner)
不会像您期望的那样工作(如果owner
不是一个函数)。它仍然不能解释你的实际目标是什么。到目前为止,我只能假设扩展Function.prototype
不是正确的方法。在这种情况下,我的目标是很容易用函数和一组参数创建未来/承诺。结果可用于延迟评估。但可能还有其他应用程序。