首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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 中引入的。

资源

扫码关注腾讯云开发者

领取腾讯云代金券