版本

no-proto

禁止使用 __proto__ 属性

__proto__ 属性已在 ECMAScript 3.1 中被弃用,不应在代码中使用。请改用 Object.getPrototypeOfObject.setPrototypeOf

规则详情

当使用 new 运算符创建对象时,__proto__ 会被设置为对象构造函数的原始 “prototype” 属性。Object.getPrototypeOf 是获取对象原型首选方法。要更改对象的原型,请使用 Object.setPrototypeOf

此规则的 错误 代码示例

在 Playground 中打开
/*eslint no-proto: "error"*/

const a = obj.__proto__;

const a1 = obj["__proto__"];

obj.__proto__ = b;

obj["__proto__"] = b;

此规则的 正确 代码示例

在 Playground 中打开
/*eslint no-proto: "error"*/

const a = Object.getPrototypeOf(obj);

Object.setPrototypeOf(obj, b);

const c = { __proto__: a };

何时不使用此规则

如果您需要支持实现了 __proto__ 属性但未实现 Object.getPrototypeOfObject.setPrototypeOf 的旧版浏览器,您可能需要关闭此规则。

版本

此规则在 ESLint v0.0.9 中引入。

延伸阅读

资源

更改语言