兩個「這個」變量我想Function.prototype的一個自定義的方法擴展:訪問在Function.prototype的
Function.prototype.myMethod = function() {
var fn = this;
var owner = ???;
/** ... */
};
this
在該範圍指的是原有的功能。但是,如何訪問this
指的是「擁有」該功能的對象(或任何外部的this
在調用fn
時)?
兩個「這個」變量我想Function.prototype的一個自定義的方法擴展:訪問在Function.prototype的
Function.prototype.myMethod = function() {
var fn = this;
var owner = ???;
/** ... */
};
this
在該範圍指的是原有的功能。但是,如何訪問this
指的是「擁有」該功能的對象(或任何外部的this
在調用fn
時)?
您需要將它作爲參數傳遞給函數調用......不確定這是否可以用於特定用途。
myMethod(this);
function myMethod(parent) {
// ...
SpiderMonkey和JScript在函數對象上實現了非標準的「調用者」屬性。我不知道其他瀏覽器支持的程度。
我相信它應該是這樣的訪問:
Function.prototype.myMethod = function() {
var fn = this;
var owner = this.caller;
/** ... */
};
,但沒有測試它。正如我所說,這不是ECMA標準的一部分。
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/Caller
我覺得你可以不知道,因爲你實際上不叫「原始」功能。無法知道函數是否分配給屬性。你想做什麼?也許有比擴展'Function.prototype'更好的方法。 – 2011-06-03 15:07:24
我正在嘗試執行以下操作: 'Function.prototype.future = function(){var fn = this; var owner = ???;返回fn.bind(owner,arguments); };' – kpozin 2011-06-03 15:13:15
不存在「兩個'這個''變量。」您唯一的選擇是將其作爲參數傳入。 – Pointy 2011-06-03 15:15:41