JavaScript

set(セッター)

 編集:2022.08.07 by T.A.

あるオブジェクト プロパティを関数にバインドして、プロパティに設定しようとしたときに呼び出される関数に結びつけます。オブジェクトの中で使用する。

set prop(val) { }

計算プロパティ名の使用:

set [expression](val) { }
prop 与えられた関数に結び付けられるプロパティの名前
expression ECMAScript 2015 より、算出されたプロパティ名(computed property name)の式を使用して関数に結び付けることもできます。
val prop に設定しようとする値を保持する変数のエイリアスです。

JavaScript では、特定のプロパティを変更しようとするたびに関数を実行するため、セッターを利用できます。セッターはたいていゲッターと合わせて、擬似的なプロパティを作成するために用いられます。実際の値を持つプロパティが、同時にセッターを持つことはできません。

set 構文を使用する際の注意事項:

新しいオブジェクトでオブジェクトの初期化時にセッターを定義

以下の例では、擬似プロパティ current を language オブジェクトに定義します。current に値が代入されると、log をその値で更新します。

const language = {
  set current(name) {
    this.log.push(name); //配列の最後に要素を追加
  },
  log: []
}
language.current = 'EN'; //language.log=['EN']
language.current = 'FA'; //language.log=['EN', 'FA']

current は定義されておらず、あらゆるアクセスを試みてもその結果は undefined になることに注意してください。

delete 演算子によるセッターの削除

セッターを削除したい場合は、delete だけで削除できます:

const language = {
  set current(name) {
    this.log.push(name); //配列の最後に要素を追加
  },
  log: []
}
delete language.current;

計算プロパティ名の使用:

A="Prop"; B="1";
Obj={
  set [A+B](name) {
    this.log.push(name); //配列の最後に要素を追加
  },
  log: []
}
Obj.Prop1="あ"; //Obj.log=["あ"]

¶以下を省く


テスト