3 回答

TA贡献1815条经验 获得超13个赞
您正在立即调用该函数。
当您在函数引用上保留括号时,您基本上是在说:
评估closeThis函数并将结果分配给onclick
当您真正想要做的是将函数引用分配给点击处理程序时:
document.getElementById("closeButton").onclick = myclassObj.closeThis;
相反,省去括号,然后将closeThis函数绑定到onclick。相反,这是说:
将函数closeThis分配给单击处理程序。
本质上,您是将函数分配给变量作为第一类对象,或者是对函数的引用。
顺便说一句,我个人的喜好是始终使用匿名函数包装器。有时您需要能够将参数传递到函数中,从而确保可以更轻松地做到这一点:
document.getElementById("closeButton").onclick =
function() {
myclassObj.closeThis();
};

TA贡献1804条经验 获得超7个赞
它应该是 document.getElementById("closeButton").onclick = myclassObj.closeThis; 不 myclassObj.closeThis();
myclassObj.closeThis() 将调用该函数,然后将值分配给onclick

TA贡献1828条经验 获得超6个赞
您需要从中删除括号(),否则它将立即被调用,因为这是通过后缀调用函数的方式(),因此只需删除以下括号即可:
document.getElementById("closeButton").onclick = myclassObj.closeThis;
添加回答
举报