这是一个基础问题,但我无法弄清楚为什么上下文(“this”指针)在第二个事件处理程序中是正确的,而在第一个事件处理程序中是不正确的。
我有这个简单的构造函数来创建对象 myNotifier:
function Notifier ( message ) {
this.message = message;
this.saySomething = function () {
alert( "I say:" + this.message);
}
}
myNotifier = new Notifier(" HELLO!");
然后我将该myNotifier.saySomething()
方法用作 CLICK 两个按钮的事件处理程序:
$(".button1").click( myNotifier.saySomething );
$(".button2").click( function () { myNotifier.saySomething()});
第一个显示:“我说:未定义” 第二个显示:“我说:HELLO”
我知道调用方法时上下文(this)不是原始对象,但是为什么在第二个按钮的函数内部调用时它是正确的?