非標準
この機能は標準ではなく、標準化の予定もありません。公開されているウェブサイトには使用しないでください。ユーザーによっては使用できないことがあります。実装ごとに大きな差があることもあり、将来は振る舞いが変わるかもしれません。
非推奨
この機能はウェブ標準から削除されました。まだ対応しているプラウザーがあるかもしれませんが、ゆくゆくはなくなるものです。使用を避け、できれば既存のコードを更新してください。このページの下部にあるブラウザーの対応を見て判断してください。この機能は突然動作しなくなる可能性があることに注意してください。
概要
オブジェクトのプロパティと関数とを結びつけます。そのプロパティへ値が設定されようとする時に、結びつけた関数が呼び出されます。
構文
obj.__defineSetter__(prop,fun)
引数
prop- 関数と結びつけるプロパティの名前を表す文字列
fun
プロパティへ値が設定されようとする時に呼び出される関数。この関数は以下の形式をとります。
function (val) { ... }
Return value
説明
__defineSetter__ を使う事で、既存のオブジェクトにセッタ関数を定義する事ができます。
例
// Non-standard and deprecated way
var o = {};
o.__defineSetter__('value', function(val) { this.anotherValue = val; });
o.value = 5;
console.log(o.value); // undefined
console.log(o.anotherValue); // 5
// Standard-compliant ways
// 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
仕様
| Specification |
|---|
| ECMAScript (ECMA-262) Object.prototype.__defineSetter__() の定義 |
ブラウザ実装状況
The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.
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 完全対応 あり |
凡例
- 完全対応
- 完全対応
- 非推奨。新しいウェブサイトでは使用しないでください。
- 非推奨。新しいウェブサイトでは使用しないでください。
- 実装ノートを参照してください。
- 実装ノートを参照してください。