Eslint
规则 | Rules

no-prototype-builtins

不允许直接使用 Object.prototypes 内建(no-prototype-builtins)

在 ECMAScript 5.1 中增加了Object.create,它可以创建具有指定对象的对象[[Prototype]]Object.create(null)是用于创建将用作 Map 的对象的常用模式。当假定对象将具有属性时,这可能导致错误Object.prototype。此规则可防止Object.prototype直接从对象调用方法。

规则细节

这个规则不允许直接在Object.prototype对象实例上调用某些方法。

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

/*eslint no-prototype-builtins: "error"*/ var hasBarProperty = foo.hasOwnProperty("bar" var isPrototypeOfBar = foo.isPrototypeOf(bar var barIsEnumerable = foo.propertyIsEnumerable("bar"

这个规则的正确代码示例:

/*eslint no-prototype-builtins: "error"*/ var hasBarProperty = Object.prototype.hasOwnProperty.call(foo, "bar" var isPrototypeOfBar = Object.prototype.isPrototypeOf.call(foo, bar var barIsEnumerable = {}.propertyIsEnumerable.call(foo, "bar"

何时不使用它

如果您永远不会使用阴影Object.prototype方法或不从Object.prototype继承的对象,则可能需要关闭此规则。

版本

这条规则是在 ESLint 2.11.0 中引入的。

资源