Object.prototype.__defineGetter__()
警告: この機能は非推奨となり、オブジェクト初期化子の構文または Object.defineProperty()
API を使用してゲッターを定義する方法で置き換えられました。この機能は広く実装されていますが、古い使い方であるために ECMAScript 仕様書で非推奨となっています。よりよい代替策が存在するので、このメソッドを使用しないでください。
__defineGetter__
メソッドは、オブジェクトのプロパティと関数を結び付け、そのプロパティが参照されるときに呼び出されるようにします。
構文
__defineGetter__(prop, func)
引数
prop
-
関数と結びつけるプロパティの名前を表す文字列です。
func
-
プロパティの値を参照するときに呼び出される関数です。
返値
undefined
です。
解説
__defineGetter__
を使用することで、既存のオブジェクトにゲッターを定義することができます。
例
標準外かつ非推奨の方法
var o = {};
o.__defineGetter__('gimmeFive', function() { return 5; });
console.log(o.gimmeFive); // 5
標準準拠の方法
// get 演算子を使用
var o = { get gimmeFive() { return 5; } };
console.log(o.gimmeFive); // 5
// Object.defineProperty を使用
var o = {};
Object.defineProperty(o, 'gimmeFive', {
get: function() {
return 5;
}
});
console.log(o.gimmeFive); // 5
仕様書
Specification |
---|
ECMAScript Language Specification # sec-object.prototype.__defineGetter__ |
ブラウザーの互換性
BCD tables only load in the browser
関連情報
Object.prototype.__defineGetter__
のポリフィルはcore-js
で利用できますObject.prototype.__defineSetter__()
get
演算子Object.defineProperty()
Object.prototype.__lookupGetter__()
Object.prototype.__lookupSetter__()
- JavaScript ガイド: ゲッターとセッターの定義
- [Blog Post] Deprecation of __defineGetter__ and __defineSetter__
- Firefox バグ 647423