下面的代码不工作,我凭直觉就想到:的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