
no-proto
禁止使用 __proto__
属性
__proto__
属性已在 ECMAScript 3.1 中被弃用,不应在代码中使用。请改用 Object.getPrototypeOf
和 Object.setPrototypeOf
。
规则详情
当使用 new
运算符创建对象时,__proto__
会被设置为对象构造函数的原始 “prototype” 属性。Object.getPrototypeOf
是获取对象原型首选方法。要更改对象的原型,请使用 Object.setPrototypeOf
。
此规则的 错误 代码示例
在 Playground 中打开
/*eslint no-proto: "error"*/
const a = ;
const a1 = ;
= b;
= b;
此规则的 正确 代码示例
在 Playground 中打开
/*eslint no-proto: "error"*/
const a = Object.getPrototypeOf(obj);
Object.setPrototypeOf(obj, b);
const c = { __proto__: a };
何时不使用此规则
如果您需要支持实现了 __proto__
属性但未实现 Object.getPrototypeOf
或 Object.setPrototypeOf
的旧版浏览器,您可能需要关闭此规则。
版本
此规则在 ESLint v0.0.9 中引入。
延伸阅读
