我在这里尝试一些代码,
var cat={
col:"Red",
getCol:function(){
document.writeln(this.col);
}
}
function getCol(){
document.writeln(cat.col);
}
$(function(){
$("#button1").click(cat.getCol);
$("#button2").click(getCol);
})
但是我为button1定义了未定义,为button2定义了“红色”.有人可以告诉我为什么吗?
如果我将其更改为$(“#button1”).click(cat.getCol());,则会得到我需要的“红色” …
解决方法:
首先
$("#button1").click(cat.getCol);
给您未定义的信息,因为cat.getCol的主体在运行时不会使用cat.如果您担心跨浏览器的兼容性,我建议您在此处使用Function.prototype.bind或其他几种变体.关于将“方法”设置为事件处理程序并确保其始终与封闭对象绑定的问题,有许多已发布的解决方案.
下一个
$("#button2").click(getCol);
可以正常工作,因为getCol直接使用cat.
最后
$("#button1").click(cat.getCol());
是完全错误的.表达式cat.getCol()是一个返回未定义的调用.为点击处理程序设置的值不是一个很好的值.您刚刚看到document.write发生了,但是没有响应单击.
附录