下面的代碼不工作,我憑直覺就想到:的jQuery/JavaScript事件 - 原型事件處理
function MyObject(input) {
input.change(this._foo);
this.X = undefined;
}
MyObject.prototype._foo = function() {
alert("This code is never called");
// but if it did
this.X = true;
}
var test_input = $("input#xyz"); // a random, existing input
var m = MyObject(test_input); // attach handler (or try to)
test_input.change(); // trigger event
alert(m.X); // undefined
我期望_foo()
將被稱爲(和,如果沒發生,那在_foo()
的this
變量是爲MyObject的一個實例。
有誰知道爲什麼這不適合傳遞對象與事件處理工作,以及任何其他模式?
感謝您閱讀ING。
布賴恩
在jQuery中有一些附加事件('bind()','live()')和觸發事件('trigger()')的方法。我不確定你在這裏得到什麼。另外,在我看來,如果你想調用一個對象方法,你需要調用它像'this._foo()'而不是'this._foo',否則你正在做任務。這完全有可能我誤解了你。 – artlung 2010-06-10 22:12:04
可能重複的[如何訪問正確的\'this \'/ context在回調?](http://stackoverflow.com/questions/20279484/how-to-access-the-correct-this-context-inside -a-callback) – Bergi 2014-02-27 18:59:53
謝謝Bergi。在這個關閉的三年之後,被引用的問題被問到了,那麼重複會不會真的走向另一個方向?將這個問題標記爲「已經回答」了三年後出現的問題是錯誤的,並且似乎具有誤導性。這個問題不是這個問題的重複嗎? – 2014-02-27 19:18:52