2014-10-29 2 views
0

Я довольно новый с javascript, и я думаю, что это глупый вопрос, но я не знаю, как искать мою проблему в Google.javacript класс метод инкапсуляции вопрос

У меня есть «класс», как, что:

function Myclass(){} 

Myclass.prototype.method1() = function(){ 

    whatever.onload = function(){ 
     this.method2(); 
    } 

}; 

Myclass.prototype.method2() = function(){}; 

Моя проблема заключается в том, что «это» не имеет отношения к моему классу больше. В этой области анонимной функции я не могу достичь своего метода2.

Как я могу решить эту проблему?

Спасибо за ваши советы.

ответ

4

Самый простой способ, как это:

Myclass.prototype.method1 = function(){ 
    var self = this; 
    whatever.onload = function(){ 
     self.method2(); 
    } 
}; 

Переменная self остается в существование даже после того, как method1 заканчивает выполнение такой, что функция OnLoad объявлена ​​с method1 еще может получить доступ к нему позже. (Для получения дополнительной информации об этом, Google закрывает JavaScript.)

+0

Я проверю это. Большое вам спасибо, это решит мою проблему! – user3561383

+0

Я думаю, что вы имели в виду 'Myclass.prototype.method1 = function() {' в вашей первой строке кода. Похож на опечатку. – Renaud

+1

@Reno - Да. Я скопировал эту строку непосредственно из вопроса и не заметил проблемы. Исправлена. – nnnnnn

Смежные вопросы