no-obj-calls
Запретить вызов свойств глобальных объектов как функций
Использование конфигурации recommended из @eslint/js в
файле конфигурации
включает эту
правило
ECMAScript предоставляет несколько глобальных объектов, предназначенных для использования в
их первоначальном виде. Некоторые из этих объектов выглядят так, как будто они могут быть
конструкторами из-за их прописного регистра (например, Math и JSON),
но вызовут ошибку, если вы попытаетесь их выполнить как функции.
Спецификация ECMAScript 5
делает ясным, что как Math, так и
JSON нельзя вызывать:
Объект Math не имеет внутреннего свойства
[[Call]]; вызов объекта Math как функции невозможен.
Спецификация ECMAScript 2015
делает ясным, что Reflect нельзя вызывать:
Объект Reflect также не имеет внутреннего метода
[[Call]]; вызов объекта Reflect как функции невозможен.
Спецификация ECMAScript 2017
делает ясным, что Atomics нельзя вызывать:
Объект Atomics не имеет внутреннего метода
[[Call]]; вызов объекта Atomics как функции невозможен.
И спецификация ECMAScript API интернационализации
делает ясным, что Intl нельзя вызывать:
Объект Intl не имеет внутреннего метода
[[Call]]; вызов объекта Intl как функции невозможен.
Подробное описание правила
Это правило запрещает вызывать объекты Math, JSON, Reflect, Atomics и Intl как функции.
Это правило также запрещает использование этих объектов в качестве конструкторов с оператором new.
Примеры неправильного кода для этого правила:
/*eslint no-obj-calls: "error"*/
var math = ;
var newMath = ;
var json = ;
var newJSON = ;
var reflect = ;
var newReflect = ;
var atomics = ;
var newAtomics = ;
var intl = ;
var newIntl = ;
Примеры правильного кода для этого правила:
/*eslint no-obj-calls: "error"*/
function area(r) {
return Math.PI * r * r;
}
var object = JSON.parse("{}");
var value = Reflect.get({ x: 1, y: 2 }, "x");
var first = Atomics.load(foo, 0);
var segmenterFr = new Intl.Segmenter("fr", { granularity: "word" });
Обработка TypeScript
Безопасно отключить это правило при использовании TypeScript, так как компилятор TypeScript обеспечивает эту проверку.
Версия
Это правило было добавлено в ESLint v0.0.9.
Дополнительное чтение
Ссылки
© OpenJS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/latest/rules/no-obj-calls