Disallow Global Object Function Calls (no-obj-calls)
ECMAScript provides several global objects that are intended to be used as-is. Some of these objects look as if they could be constructors due their capitalization (such as
JSON) but will throw an error if you try to execute them as functions.
The ECMAScript 5 specification makes it clear that both
JSON cannot be invoked:
The Math object does not have a
[[Call]]internal property; it is not possible to invoke the Math object as a function.
This rule is aimed at preventing the accidental calling of global objects as functions.
The following patterns are considered problems:
/*eslint no-obj-calls: 2*/ var x = Math(); /*error 'Math' is not a function.*/ var y = JSON(); /*error 'JSON' is not a function.*/
The following patterns are not considered problems:
/*eslint no-obj-calls: 2*/ var x = math(); var y = json();
This rule was introduced in ESLint 0.0.9.