【发布时间】:2010-06-10 21:12:59
【问题描述】:
以下代码无法正常工作:
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 的实例化。
有谁知道为什么这不起作用,以及将对象传递给事件处理程序的任何替代模式吗?
感谢您的阅读。
布赖恩
【问题讨论】:
-
jQuery 中有现有的附加事件(
bind()、live())和触发事件(trigger())的方法。我不确定你在这里得到什么。另外,在我看来,如果你想要调用一个对象方法,你需要像this._foo()而不是this._foo那样调用它,否则你正在做分配。不过,我完全有可能误解了你。 -
谢谢伯吉。引用的问题是在此问题关闭三年后提出的,那么重复实际上不会朝另一个方向发展吗?三年后提出的问题将这个问题标记为“已回答”是不正确的,并且似乎具有误导性。这个问题不会和这个问题重复吗?
标签: javascript jquery prototype object closures