如果我有這樣的功能:如何獲得調用者函數的'this'值?
function foo(_this) {
console.log(_this);
}
function bar() {}
bar.prototype.func = function() {
foo(this);
}
var test = new bar();
test.func();
那麼bar
的test
實例得到記錄。
但是,爲了這個工作,我必須通過bar.prototype.func
函數中的this
。我想知道是否有可能獲得相同的this
價值沒有通過this
。
我試過使用arguments.callee.caller
,但是這返回原型函數本身,而不是原型函數內的this
值。
是否可以通過在原型函數中僅調用foo()
來記錄test
bar
的實例?
不,你不能訪問的函數調用堆棧的上下文。你必須傳遞這個背景。 – Raynos 2011-06-13 14:54:12
如果你已經打算創建一個特殊用途的函數來記錄連接到酒吧的原型,是否有一個原因你不想傳遞這個'this'?除了學習目的使用這種模式之外,還有其他原因嗎? – TNi 2011-06-13 15:01:49
@TNi:這不一定有實用的目的,但在我的情況下會很有用。我試圖通過傳遞一個函數並綁定到一個函數來執行循環的多級循環,該函數執行的功能與for循環一樣。在一個普通的for循環中,可以訪問'this',但這樣看來我需要將'this'傳遞給我的函數。 – pimvdb 2011-06-13 15:04:52