var handler = {
message: "Event handled",
handleClick: function (event) {
alert(this.message);
}
};
var btn = document.getElementById("my-btn");
EventUtil.addHandler(btn, "click", function (event) {
handler.handleClick(event);//此处请问为什么会弹出Event handled
});
js 闭包 函数绑定
message: "Event handled",
handleClick: function (event) {
alert(this.message);
}
};
var btn = document.getElementById("my-btn");
EventUtil.addHandler(btn, "click", function (event) {
handler.handleClick(event);//此处请问为什么会弹出Event handled
});
js 闭包 函数绑定
所以弹出handler的message 'Event handled'.
var handler = {
message: "Event handled",
handleClick: function (event) {
alert(this.message);
}
};
var btn = document.getElementById("my-btn");
EventUtil.addHandler(btn, "click", handler.handleClick);这个是没有闭包版本,为什么是undefined
var handler = {
message: "Event handled",
handleClick: function (event) {
alert(this.message);
}
};
var btn = document.getElementById("my-btn");
EventUtil.addHandler(btn, "click", handler.handleClick);这个是没有闭包版本,为什么是undefined
这个时候,函数handleClick的上下文是html元素(#my-btn),也就是说点击后函数执行时 this=元素#my-btn,因为#my-btn并没有message的属性,所以就弹出'undefined'了
2.你这个就相当于 $(event).live("click",function(){ aa();});
function aa()
{
alert("Event handled");
}
var handler = {
message: "Event handled",
handleClick: function (event) {
alert(this.message);
}
};
var btn = document.getElementById("my-btn");
EventUtil.addHandler(btn, "click", handler.handleClick);这个是没有闭包版本,为什么是undefined
这个时候,函数handleClick的上下文是html元素(#my-btn),也就是说点击后函数执行时 this=元素#my-btn,因为#my-btn并没有message的属性,所以就弹出'undefined'了你好。请问第一个的时候为什么上下文是handler?谢谢
var handler = {
message: "Event handled",
handleClick: function (event) {
alert(this.message);
};
var btn = document.getElementById("my-btn");
EventUtil.addHandler(btn, "click", handler.handleClick);这个是没有闭包版本,为什么是undefined
这个时候,函数handleClick的上下文是html元素(#my-btn),也就是说点击后函数执行时 this=元素#my-bt因为#my-btn并没有message的属性,所以就弹出'undefined'了
明白了。谢谢
var handler = {
message: "Event handled",
handleClick: function (event) {
alert(this.message);
}
};
var btn = document.getElementById("my-btn");
EventUtil.addHandler(btn, "click", handler.handleClick);这个是没有闭包版本,为什么是undefined
这个时候,函数handleClick的上下文是html元素(#my-btn),也就是说点击后函数执行时 this=元素#my-btn,因为#my-btn并没有message的属性,所以就弹出'undefined'了你好。请问第一个的时候为什么上下文是handler?谢谢第一个的时候,你绑定的click事件函数是包含handler.handleClick(event)的匿名函数function(event){//...},匿名函数里的this是#my-btn,但是handler.handleClick是访问不到这个this的,它的this仍然是handler对象。第二个的时候,你绑定的click事件函数才是handler.handleClick函数本身,所以它里面的this就是#my-btn了。