Eslint
规则 | Rules

no-obj-calls

不允许调用全局对象属性作为函数(no-obj-calls)

"extends": "eslint:recommended"配置文件中的属性启用此规则。

ECMAScript 提供了几个用于原样使用的全局对象。其中一些对象看起来好像它们可能是构造函数,因为它们的大小写(如MathJSON),但如果尝试将它们作为函数执行,则会引发错误。

在 ECMAScript的5规范 明确规定,双方MathJSON不能调用:

Math 对象没有[[Call]]内部属性; 作为函数不可能调用 Math 对象。

ECMAScript 的2015年规范明确指出,Reflect不得援引:

反射对象也没有[[Call]]内部方法; 作为函数调用 Reflect 对象是不可能的。

规则细节

这个规则不允许调用MathJSONReflect对象作为功能。

这个规则的错误代码示例:

/*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"

进一步阅读