Javascript «это» сфера в JQuery - PullRequest
0 голосов
/ 18 мая 2011

Я только что преобразовал фрагмент кода, который был литералом объекта, в класс, и у меня возникли проблемы с областью действия в цикле jQuery $.each().

Скажи, что у меня есть класс ...

var myClass = function(var1) {
  this.var1 = var1;
}

myClass.prototype.myFuncion = function() {
  var context = this;
  $.each(this.var1, function() {
    context.myOtherFunction()

    //is there any way of accessing 'this' from here?
  }) 
}

Я хочу знать, как получить доступ к контексту класса внутри каждого из них?

Я знаю, что могу определить переменную вне цикла, но это предпочтительный метод?

Ответы [ 3 ]

1 голос
/ 18 мая 2011

В jQuery each ключевое слово this относится к текущему элементу в итерации. Вы можете прочитать документацию и посмотреть примеры , чтобы проиллюстрировать это.

Определение переменной вне цикла является обычным случаем, как вы можете видеть, например, в jQuery- Исходный код пользовательского интерфейса для datepicker .

1 голос
/ 18 мая 2011

То, как вы это сделали, это путь;как только вы вводите область действия каждого из них, «this» относится к текущему элементу в коллекции, которая находится в режиме кэширования.Насколько я знаю, нет внутренней языковой конструкции, чтобы получить «родителя» этого;переименование это лучший способ.

0 голосов
/ 18 мая 2011

Это не дает прямого ответа на ваш вопрос, но я нашел это недавнее видео о вводе / выводе Google чрезвычайно полезным: http://ontwik.com/javascript/google-io-2011-learning-to-love-javascript

Примерно 20-25 минут - отличное объяснение этого в JavaScript,Это также очень ясно объясняет некоторые языковые особенности.

...