Javascript: вызов метода объекта различными способами - PullRequest
0 голосов
/ 16 февраля 2012

Вот код:Часть 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>

Ниже приведены два различных способа вызова одного и того же метода внутри одного и того же объекта, и свойство inf cont продолжает увеличиваться независимо от кнопкинажата.Изменение контекста: это окно, когда нажимается Button1, и tagButton, когда нажимается Button2, но это нормально.Я не понимаю, почему я вынужден назначить onclick для function () {ccc.inc ()} вместо ccc.inc that.На мой взгляд, не должно быть никакой разницы.Tnx

Ответы [ 2 ]

0 голосов
/ 16 февраля 2012

«this» работает только тогда, когда функция вызывается напрямую «instance», как в ccc.inc (). При передаче в качестве ссылки «this» относится к вызывающему контексту, в данном случае к интерактивному элементу.

0 голосов
/ 16 февраля 2012

Первый метод () отсутствует?Это должно быть

document.getElementById("bid").onclick = ccc.inc();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...