的Javascript:以不同的方式调用对象的方法
下面的代码:
JavaScript部分:的Javascript:以不同的方式调用对象的方法
ContatoreCostr = function(nome){
this.nome = nome;
this.cont = 0;
this.inc = function() {
alert(this + "--" + this.nome + "--" + this.cont++);
};
}
var ccc= new ContatoreCostr("zio");
window.onload = function() {
//document.getElementById("bid").onclick = ccc.inc; // DO NOT WORK
document.getElementById("bid").onclick = function(){ccc.inc()}; //WORKS
}
HTML部分:
<button onClick="ccc.inc()">Buttton1</button>
<button id="bid">Bottone2</button>
这里有两种不同的方式来调用内部的相同方法相同的对象,事实上'继续'属性继续增加任何按钮被点击。上下文改变:点击Button1时是窗口,点击Button2时是tagButton,但没关系。 我不明白为什么我*分配函数(){ccc.inc()}而不是ccc.inc那。在我看来,应该没有区别。 Tnx
()缺失的第一种方法? 应该
document.getElementById("bid").onclick = ccc.inc();
“这个”只有当此功能已经由“实例”直接调用的工作,就像在ccc.inc()。当作为参考传递时,“this”指的是调用上下文,在这种情况下是可点击元素。
ok,所以你说:在'不工作'的情况下,inc()被称为int'this'的上下文,它是buttonTag。与'作品'的情况相反,应该像这样:buttonTag就是这个。解释器考虑加载ccc,即先前实例化的对象,然后在ccc上调用inc()。这说得通。事实上,我花了一些时间来弄清楚'作品'的解决方案,我通过试验和错误来进行研究,但我仍然无法弄清楚设计'作品'解决方案的一系列逻辑步骤。我会感谢任何能够深入推荐文档的人。谢谢。 – chairam 2012-02-16 20:07:51
呃...是的,没有工程案例在调用对象的上下文中执行,这是点击元素。在互联网上似乎有很多关于这方面的解释,请看这里的例子:http://jibbering.com/faq/notes/closures/ – Ixx 2012-02-16 21:17:07
我编辑了我的帖子。我不能给你一个深刻的解释,因为这个概念现在对我来说只是表面上很清楚。当我有时间时,我还会阅读文档^^ – Ixx 2012-02-16 21:29:20
不,如果你把括号inc()在加载页面时进行评估,那不是你想要的。 – chairam 2012-02-16 16:19:58