это, сам или я — который предпочесть в JavaScript?

При кодировании JavaScript иногда Вы храните ссылку объекта this в локальной переменной в различных целях (чтобы установить надлежащий объем, помочь кодировать obfuscators, и т.д.). Существуют кодеры, которые предпочитают искажать this кому: that сделать это очевидным его намерение. Другое использование парней self так как это указывает на сам объект. Я даже видел исходные коды где me сохраненный ссылкой и это все еще имеет смысл. Конечно, существуют другие.

Какой я должен предпочесть? Есть ли конвенция, на которой можно использовать или можно быть этим только вопрос вкуса.

19
задан Török Gábor 23 April 2010 в 13:19
поделиться

3 ответа

Лично я использую , что , но все остальное, что ясно, нормально.

Я бы не стал использовать self , потому что глобальная переменная / window -property self уже существует как ссылка на window . Хотя это совершенно бесполезно (так что никого не волнует, что вы за ним следите), он немного увеличивает риск того, что глупые ошибки останутся незамеченными:

var se1f= this;         // misspelled (perniciously). or maybe you just forgot to write line
onclick= function() {
    self.foo= 1;        // whoops, just wrote to `window`!
};

тогда как:

var that= this;
onclick= function() {
    that.foo= 1;        // error thrown
};

Слегка надуманный, но JavaScript так небрежно допускает ошибки слайд, вы действительно не хотите, чтобы это было так.

44
ответ дан 30 November 2019 в 02:48
поделиться

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

this относится к контексту, в котором вы находитесь, поэтому на самом деле это не вариант, который не вводит путаницу и не допускает ошибок. Я вижу, что self использовал гораздо больше, чем me (в примере кода, фреймворков, библиотек и т. Д.). Это просто предпочтение, но я согласен, что я более привлекателен, не знаю почему ... опять же, просто мое предпочтение.

2
ответ дан 30 November 2019 в 02:48
поделиться

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

Таким образом, например, в настройке jQuery, я мог бы использовать что-нибудь, чтобы отметить тип элемента, который должен содержать временный этот тайник:

$('form').each(function() {
  var $form = $(this);
  $form.find('input:checkbox').each(function() {
    var $checkbox = $(this);
    // ...
  });
});

Использование префикса «$» для переменных - хороший вариант. способ отслеживать, был ли объект "jQuery-ized" или нет: -)

1
ответ дан 30 November 2019 в 02:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: