この機能は非推奨となり、オブジェクト初期化子の構文または Object.defineProperty() API を使用してセッターを定義する方法で置き換えられました。
ただし、ウェブ上では広く実装および利用されているため、ブラウザーが実装をやめる可能性は極めて低いと考えられます。
__defineSetter__ メソッドは、オブジェクトのプロパティと関数を結び付け、そのプロパティを設定しようとすると呼び出されるようにします。
構文
obj.__defineSetter__(prop, fun)
引数
prop- 関数と結びつけられたプロパティの名前を表す文字列です。
fun- プロパティへ値を設定しようとしたときに呼び出される関数です。この関数は以下の形式をとります。
function(val) { . . . }val- An alias for the variable that holds the value attempted to be assigned to
propへ代入しようとする値を保持する変数のエイリアスです。
返値
説明
__defineSetter__ を使用することで、既存のオブジェクトにセッター関数を定義する事ができます。
例
標準外かつ非推奨の方法
var o = {};
o.__defineSetter__('value', function(val) { this.anotherValue = val; });
o.value = 5;
console.log(o.value); // undefined
console.log(o.anotherValue); // 5
標準準拠の方法
// Using the set operator
var o = { set value(val) { this.anotherValue = val; } };
o.value = 5;
console.log(o.value); // undefined
console.log(o.anotherValue); // 5
// Using Object.defineProperty
var o = {};
Object.defineProperty(o, 'value', {
set: function(val) {
this.anotherValue = val;
}
});
o.value = 5;
console.log(o.value); // undefined
console.log(o.anotherValue); // 5
仕様書
| 仕様書 |
|---|
| ECMAScript (ECMA-262) Object.prototype.__defineSetter__() の定義 |
ブラウザーの互換性
このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 https://github.com/mdn/browser-compat-data をチェックアウトしてプルリクエストを送信してください。
Update compatibility data on GitHub
| デスクトップ | モバイル | サーバー | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
__defineSetter__ | Chrome 完全対応 1 | Edge 完全対応 12 | Firefox
完全対応
1
| IE 完全対応 11 | Opera 完全対応 9.5 | Safari 完全対応 3 | WebView Android 完全対応 1 | Chrome Android 完全対応 18 | Firefox Android 完全対応 4 | Opera Android 完全対応 10.1 | Safari iOS 完全対応 1 | Samsung Internet Android 完全対応 1.0 | nodejs 完全対応 あり |
凡例
- 完全対応
- 完全対応
- 非推奨。新しいウェブサイトでは使用しないでください。
- 非推奨。新しいウェブサイトでは使用しないでください。
- 実装ノートを参照してください。
- 実装ノートを参照してください。