Как мне вызвать эту функцию из JQuery? - PullRequest
1 голос
/ 27 июля 2011

Я хочу использовать JQuery в программе Javascript, над которой я работаю, но у меня возникли некоторые проблемы с областью действия.Как мне вызвать myfunction2 из myfunction1 в этом псевдо-коде?(предположим, что новый объект MyConstructor был создан где-то и что myfunction1 () был вызван)

function MyConstructor(){...}

MyConstructor.prototype.myfunction1 = function(param) {
   $('#some_element').click(function(){
    this.myfunction2('clicked!'); //this doesn't work
  });
}

MyConstructor.prototype.myfunction2 = function(param) {

}

1 Ответ

2 голосов
/ 27 июля 2011

myfunction2 можно вызвать с помощью this.myfunction2(), если используется любая функция из MyConstructor.

В вашем случае вы пытаетесь вызвать myfunction2 внутри другой функции, которая имеет другое значение для this. Чтобы получить доступ к myfunction2, вы можете создать переменную для this или this.myfunction2, которая находится в области закрытия, которая распространяется на параметр функции click

var self = this; 
$('#some_element').click(function(){
   self.myfunction2('clicked!');
});

или

var myfunction2 = this.myfunction2; 
$('#some_element').click(function(){
   myfunction2('clicked!');
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...