$(function(){
//choose one below at once, the results are different
$('#click').click(clickMe.popup);
$('#click').click(clickMe.popup());
});
var clickMe = {
message: 'hello',
popup: function(){
alert(this.message);
}
}
<input type='button' value='click me' id='click' />结果不一样,
问题:
发布于 2015-05-25 13:37:12
弹出()和弹出有什么不同?
popup() 调用函数。popup只是引用它(例如,您可以将它指定为click处理程序)。
弹出窗口里的信息怎么了?
当你把它联系起来
$('#click').click(clickMe.popup);...the单击将调用该函数,但是this引用的是DOM元素,而不是clickMe对象。您可以使用Function#bind修复这个问题:
$('#click').click(clickMe.popup.bind(clickMe));Function#bind返回一个函数,当调用该函数时,将使用您提供的this值调用原始函数。如果您需要支持没有Function#bind的旧浏览器(如Function#bind),jQuery提供的$.proxy功能与此类似:
$('#click').click($.proxy(clickMe.popup, clickMe));...or --您可以只使用shim/polyfill Function#bind (搜索将为您提供几个实现)。
https://stackoverflow.com/questions/30439644
复制相似问题