Передать метод в функцию - PullRequest
4 голосов
/ 21 мая 2010

В Javascript я пытаюсь передать член класса функции jQuery, но каким-то образом объект this в этой функции испортился. Это код:

function Hints() 
    {
    this.markProduct = function() { alert('hi'); };
    this.selectProduct = function() { this.markProduct(); }; 
    }

Когда я вызываю этот код, используя это:

oHints = new Hints();
oHints.selectProduct();

Работает просто отлично, и объект this в функции selectProduct ссылается на объект Hints. Но когда я попробую это:

oHints = new Hints();
$('#prodquery').keydown(oHints.selectProduct);

Объект this в функции selectProduct ссылается на html-объект, вызвавший событие keydown.

У кого-нибудь есть подсказка? Я озадачен: /

1 Ответ

8 голосов
/ 21 мая 2010

Сделайте это вместо:

$('#prodquery').keydown(function() { oHints.selectProduct() });

А затем прочитайте это для объяснения того, как this работает в разных контекстах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...