版本

no-proto

禁止使用 __proto__ 屬性

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

規則詳情

當使用 new 運算子建立物件時,__proto__ 會被設定為物件建構函式的原始「prototype」屬性。Object.getPrototypeOf 是取得物件原型偏好的方法。要變更物件的原型,請使用 Object.setPrototypeOf

此規則的 錯誤 程式碼範例

在遊樂場開啟
/*eslint no-proto: "error"*/

var a = obj.__proto__;

var a = obj["__proto__"];

obj.__proto__ = b;

obj["__proto__"] = b;

此規則的 正確 程式碼範例

在遊樂場開啟
/*eslint no-proto: "error"*/

var a = Object.getPrototypeOf(obj);

Object.setPrototypeOf(obj, b);

var c = { __proto__: a };

何時不使用

如果您需要支援實作 __proto__ 屬性但未實作 Object.getPrototypeOfObject.setPrototypeOf 的舊版瀏覽器,您可能需要關閉此規則。

版本

此規則在 ESLint v0.0.9 中引入。

延伸閱讀

資源

變更語言