版本

no-proto

不允許使用 __proto__ 屬性

__proto__ 屬性已自 ECMAScript 3.1 起棄用,不應在程式碼中使用。請改用 Object.getPrototypeOfObject.setPrototypeOf

規則細節

當使用 new 運算子建立物件時,__proto__ 會設定為物件建構函式的原始 “prototype” 屬性。Object.getPrototypeOf 是取得物件原型 (prototype) 的建議方法。若要變更物件的原型 (prototype),請使用 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 中引入的。

延伸閱讀

資源

變更語言