Как вызвать функцию прототипа в том же объекте? - PullRequest
1 голос
/ 01 июня 2011

У меня есть следующий код JavaScript.

var Test = function(){



    $("#"+elementId).click(function(){
        // How to call Test.callbackTest here?
    });

}

Test.prototype.callbackTest = function(){
    //code
}

Если я хочу вызвать callbackTest () в событии щелчка, нужно ли использовать this.callbackTest ()?

или есть ли лучшие способы?

Ответы [ 2 ]

3 голосов
/ 01 июня 2011

Если вы хотите использовать функцию щелчка, this.callbackTest () не будет работать, так как это будет привязано к объекту окна, а не к вашим функциям. Есть несколько способов сделать это .. один быстрый

    var Test = function(){

       var that = this

        $("#"+elementId).click(function(){
            // How to call Test.callbackTest here?
             that.callbackTest();
        });

    }

    Test.prototype.callbackTest = function(){


  //code
}

jquery также предоставляет решение proxy , я рекомендую вам проверить его. если вы используете его, ваш код будет выглядеть как

  var Test = function(){

        $.proxy(this.callbackTest,this) // This ensures that wheneven callbackTest is called , 'this' inside callbackTest will be bound to current object , in this case Test 
        $("#"+elementId).click(function(){
            //AND THEN YOU CAN USE THIS here 
             this.callbackTest();
        });

    }

    Test.prototype.callbackTest = function(){


  //code
}
1 голос
/ 01 июня 2011

Вы можете сделать callbackTest личным:

var Test = function(){
   function callbackTest(){
      //code
   }

   $("#"+elementId).click(callBackTest);
};

В противном случае оно должно быть

var Test = function(){
   var me = this;
   $("#"+elementId).click(function(){
        me.callbackTest();
   });
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...