Javascript:以不同的方式调用对象的方法

时间:2012-02-16 16:07:54

标签: javascript-events

这是代码:
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>

以下两种不同的方法可以在同一个对象中调用相同的方法,无论点击什么按钮,都会继续增加“cont”属性。上下文更改:单击Button1时为窗口,按下Button2时为tagButton,但没关系。 我不明白为什么我被迫分配onclick到function(){ccc.inc()}而不是ccc.inc。在我看来应该没有区别。 TNX

2 个答案:

答案 0 :(得分:0)

缺少第一种方法? 它应该是

document.getElementById("bid").onclick = ccc.inc();

答案 1 :(得分:0)

“this”仅在函数被“实例”直接调用时才有效,就像在ccc.inc()中一样。当作为引用传递时,“this”指的是调用上下文,在本例中是可点击元素。