オブジェクトプロパティに対して、値を設定しようとするときに呼び出される関数を割り当てます。
構文
{set prop(val) { . . . }}
{set [expression](val) { . . . }}
引数
prop- 与えられた関数を割り当てるプロパティの名称です。
valpropに設定しようとする値を保持する変数のエイリアスです。
説明
JavaScript では、特定のプロパティを変更しようとするたびに関数を実行するため、setter を利用できます。setter はたいてい getter と合わせて、擬似的なプロパティを作成するために用いられます。実際の値を持つプロパティが、同時に setter を持つことはできません。
JavaScript 1.8.5 より、set 演算子は以下のようになります:
- 数値か文字列かの識別子を持つことができます。
- 厳密に 1 つの引数を持たなければなりません (詳しくは Incompatible ES5 change: literal getter and setter functions must now have exactly zero or one arguments をご覧ください)。
- 同一のプロパティに別の
setあるいはデータエントリを持つオブジェクトリテラルが現れてはいけません。
( ※{ set x(v) { }, set x(v) { } }および{ x: ..., set x(v) { } }は不可 )
setter は delete 演算子を用いて削除できます。
例
set 演算子による setter の定義
ここではオブジェクト o に疑似プロパティ current を定義して、値が設定されたときに log をその値で更新します:
var o = {
set current (str) {
return this.log[this.log.length] = str;
},
log: []
}
current は定義されておらず、あらゆるアクセスを試みてもその結果は undefined になることに注意してください。
delete 演算子による setter の削除
delete o.current;
ブラウザ実装状況
Robert Nyman's page に基づきます。
サポートなし (特に IE6-8 において) とは、スクリプトが構文エラーになることを意味します。
| 機能 | Firefox (Gecko) | Chrome | Internet Explorer | Opera | Safari |
|---|---|---|---|---|---|
| 基本サポート | 2.0 (1.8.1) | 1 | 9 | 9.5 | 3 |
| 機能 | Firefox Mobile (Gecko) | Android | IE Mobile | Opera Mobile | Safari Mobile |
|---|---|---|---|---|---|
| 基本サポート | ? | ? | ? | ? | ? |