последовательная-this
Принудительно используйте последовательное именование при захвате текущего контекста выполнения
Часто необходимо захватить текущий контекст выполнения, чтобы сделать его доступным впоследствии. Ярким примером этого являются обратные вызовы jQuery:
var that = this;
jQuery('li').click(function (event) {
// here, "this" is the HTMLElement where the click event occurred
that.setFoo(42);
});
Существует множество общеиспользуемых псевдонимов для this таких как that, self или me. Желательно, чтобы любой согласованный псевдоним команды использовался последовательно во всем приложении.
Подробное описание правила
Это правило накладывает два требования на переменные с назначенными псевдонимами для this:
- Если переменная с указанным именем объявлена, она должна быть инициализирована (в объявлении) или присвоено значение
this(в том же области видимости, что и объявление). - Если переменная инициализирована или присвоено значение
this, имя переменной должно быть назначенным псевдонимом.
Параметры
Это правило имеет один или несколько строковых параметров:
- назначенные имена псевдонимов для
this(по умолчанию"that")
Примеры неправильного кода для этого правила с параметром по умолчанию "that":
/*eslint consistent-this: ["error", "that"]*/
var ;
var ;
;
;
Примеры правильного кода для этого правила с параметром по умолчанию "that":
/*eslint consistent-this: ["error", "that"]*/
var that = this;
var self = 42;
var self;
that = this;
foo.bar = this;
Примеры неправильного кода для этого правила с параметром по умолчанию "that", если переменная не инициализирована:
/*eslint consistent-this: ["error", "that"]*/
var that;
function f() {
that = this;
}
Примеры правильного кода для этого правила с параметром по умолчанию "that", если переменная не инициализирована:
/*eslint consistent-this: ["error", "that"]*/
var that;
that = this;
var foo, that;
foo = 42;
that = this;
Когда не следует использовать это
Если вам нужно захватить вложенный контекст, consistent-this будет проблематичным. Код такого рода обычно трудно читать и поддерживать, и вы должны рассмотреть возможность его рефакторинга.
Версия
Это правило было добавлено в ESLint v0.0.9.
Ресурсы
© OpenJS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/latest/rules/consistent-this