Disallow Use of __proto__ (no-proto)

__proto__ property has been deprecated as of ECMAScript 3.1 and shouldn't be used in the code. Use Object.getPrototypeOf and Object.setPrototypeOf instead.

Rule Details

When an object is created with the new operator, __proto__ is set to the original "prototype" property of the object's constructor function. Object.getPrototypeOf is the preferred method of getting the object's prototype. To change an object's prototype, use Object.setPrototypeOf.

Examples of incorrect code for this rule:

/*eslint no-proto: "error"*/

var a = obj.__proto__;

var a = obj["__proto__"];

obj.__proto__ = b;

obj["__proto__"] = b;

Examples of correct code for this rule:

/*eslint no-proto: "error"*/

var a = Object.getPrototypeOf(obj);

Object.setPrototypeOf(obj, b);

var c = { __proto__: a };

When Not To Use It

You might want to turn this rule off if you need to support legacy browsers which implement the __proto__ property but not Object.getPrototypeOf or Object.setPrototypeOf.

Further Reading

Version

This rule was introduced in ESLint 0.0.9.

Resources

Js中文网,专注分享前端最新技术、大厂面试题、聊点程序员轶事、职场感悟,做前端技术的传播者.

加入前端布道师交流群

扫描二维码回复 加群 学习,与大厂大佬讨论技术.

深入理解JavaScript系列