no-proto
Disallow the use of the __proto__ property
__proto__ 属性在 ECMAScript 3.1 中已经被废弃,不应该在代码中使用。使用 Object.getPrototypeOf 和 Object.setPrototypeOf 代替。
规则细节
当用 new 运算符创建一个对象时,__proto__ 被设置为该对象的构造函数的原始“prototype”属性。Object.getPrototypeOf 是获取对象原型的首选方法。要改变一个对象的原型,使用 Object.setPrototypeOf。
使用此规则的错误示例:
Open in Playground
/*eslint no-proto: "error"*/
var a = obj.__proto__;
var a = obj["__proto__"];
obj.__proto__ = b;
obj["__proto__"] = b;
使用此规则的正确示例:
Open in Playground
/*eslint no-proto: "error"*/
var a = Object.getPrototypeOf(obj);
Object.setPrototypeOf(obj, b);
var c = { __proto__: a };
何时不用
如果你需要支持那些实现了 __proto__ 属性,而不是 Object.getPrototypeOf 或 Object.setPrototypeOf。
Version
This rule was introduced in ESLint v0.0.9.
Further Reading