#javascript
#javascript
Вопрос:
Иногда внутренним функциям необходимо ссылаться на this
внешнюю функцию. Есть ли в JavaScript широко используемая идиома для такого? Я придумал решение, включающее присвоение this
другой переменной:
Object.defineProperty(Array.prototype, 'set', {
enumerable: false,
value: function (a) {
this.length = 0
var this1 = this
a.forEach(function (x) {
this1.push(x)
})
}
})
Но я не уверен, является ли это самым чистым или наиболее идиоматичным решением.
Ответ №1:
Я лично использую that
в качестве имени переменной вместо this1
, но в остальном это чистый, обычный и идиоматический Javascript.
Дуглас Крокфорд, похоже, также рекомендует использовать that
.
По соглашению, мы делаем эту переменную закрытой. Это используется, чтобы сделать объект доступным для частных методов. Это обходной путь для ошибки в спецификации языка ECMAScript, которая приводит к неправильной настройке этого параметра для внутренних функций.
В прошлом я также видел, как люди использовали self
.
Комментарии:
1. Я лично использую
self
, поскольку мне это кажется более описательным, чемthat
, но, очевидно, это просто личное предпочтение, какое имя вам нравится. Что более важно, так это выбрать соглашение и придерживаться его, чтобы ваш код был последовательным. Если вы работаете с кодом, написанным другими людьми, используйте их соглашение, чтобы сохранить согласованность.2. @jfriend00 1 полностью согласен. Главное — согласованность.