Object.prototype.__defineGetter__()
已棄用:此特性不再推薦。雖然某些瀏覽器可能仍然支援它,但它可能已經從相關的網路標準中刪除,可能正在刪除過程中,或者可能僅為相容性目的而保留。請避免使用它,如果可能,請更新現有程式碼;請參閱本頁底部的相容性表格以指導您的決策。請注意,此特性可能隨時停止工作。
注意: 此功能已棄用,請改用 getter 或 物件字面量語法 或 Object.defineProperty() API 定義 getter。此方法的行為僅為網頁相容性而指定,平臺上不要求實現。它可能無法在所有地方正常工作。
__defineGetter__() 方法是 Object 例項上用於將物件的屬性繫結到查詢該屬性時要呼叫的函式。
語法
__defineGetter__(prop, func)
引數
返回值
無(undefined)。
異常
TypeError-
如果
func不是函式,則丟擲此錯誤。
描述
所有繼承自 Object.prototype 的物件(即除 null-prototype 物件之外的所有物件)都繼承了 __defineGetter__() 方法。此方法允許在現有物件上定義 getter。這等同於 Object.defineProperty(obj, prop, { get: func, configurable: true, enumerable: true }),這意味著該屬性是可列舉和可配置的,並且會保留任何現有的 setter(如果存在)。
__defineGetter__() 在規範中被定義為“規範可選”,這意味著不需要實現。然而,所有主流瀏覽器都實現了它,並且由於其持續的使用,不太可能被移除。如果瀏覽器實現了 __defineGetter__(),那麼它也需要實現 __lookupGetter__()、__lookupSetter__() 和 __defineSetter__() 方法。
示例
使用 __defineGetter__()
const o = {};
o.__defineGetter__("gimmeFive", function () {
return 5;
});
console.log(o.gimmeFive); // 5
以標準方式定義 getter 屬性
在物件首次初始化時,可以使用 get 語法來定義 getter。
const o = {
get gimmeFive() {
return 5;
},
};
console.log(o.gimmeFive); // 5
您還可以使用 Object.defineProperty() 在物件建立後為其定義 getter。與 __defineGetter__() 相比,此方法允許您控制 getter 的可列舉性和可配置性,以及定義 symbol 屬性。Object.defineProperty() 方法也適用於 null-prototype 物件,這些物件不繼承自 Object.prototype,因此沒有 __defineGetter__() 方法。
const o = {};
Object.defineProperty(o, "gimmeFive", {
get() {
return 5;
},
configurable: true,
enumerable: true,
});
console.log(o.gimmeFive); // 5
規範
| 規範 |
|---|
| ECMAScript® 2026 語言規範 # sec-object.prototype.__defineGetter__ |
瀏覽器相容性
載入中…