no-obj-calls
"extends": "eslint:recommended"
配置文件中的属性启用此规则。
ECMAScript 提供了几个用于原样使用的全局对象。其中一些对象看起来好像它们可能是构造函数,因为它们的大小写(如Math
和JSON
),但如果尝试将它们作为函数执行,则会引发错误。
在 ECMAScript的5规范 明确规定,双方Math
和JSON
不能调用:
Math 对象没有
[[Call]]
内部属性; 作为函数不可能调用 Math 对象。
ECMAScript 的2015年规范明确指出,Reflect
不得援引:
反射对象也没有
[[Call]]
内部方法; 作为函数调用 Reflect 对象是不可能的。
规则细节
这个规则不允许调用Math
,JSON
和Reflect
对象作为功能。
这个规则的错误代码示例:
/*eslint no-obj-calls: "error"*/
var math = Math();
var json = JSON();
var reflect = Reflect();
这个规则的正确代码示例:
/*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");
进一步阅读
- The Math Object 版本规则是在 ESLint 0.0.9.Resources 中引入的
本文档系腾讯云开发者社区成员共同维护,如有问题请联系 cloudcommunity@tencent.com