概要
javascriptのオブジェクトについては、前回の投稿で簡単なオブジェクトの書き方、使い方を例にあげました。
オブジェクトについて、もう少し入り組んだ概念について詰めます。
オブジェクトに対してゲッターとセッターと呼ぶメソッドを指定でき、それぞれプロパティという位置づけで解釈することができます。
また、ゲッターとセッターについては、それぞれアクセサプロパティと、データプロパティという名前で区別して考えることができます。
アクセサプロパティについて
アクセサプロパティは書き込み不可の属性です。
プロパティがゲッターとセッターの両方のメソッドを持つ場合、 読み書き可のプロパティになります。
ゲッターしかない場合は、読み出し専用のプロパティになり、
セッターしかない場合は、書き込み専用のプロパティになります。
また、データプロパティは単純に値のみを持ちます。
簡単な例
具体的なゲッターメソッドは次のように定義します。
//ゲッター
var test = {
a: '10',
b: '20',
get access_a() {
return this.a;
}
}
//呼び出す時の書き方
console.log(test.access_a);
この場合は、変数testに対して、ゲッターメソッド「access_a」を定義しています。
access_aを呼び出すと、メソッド内でプロパティaの値が、返されます。
文字通り「get」キーワードを下記、その後にメソッド名と処理を書きます。
次にセッターメソッドの場合は次のように定義します。
//セッター
var test = {
c: '30',
d: '40',
get access_c() {
return this.c;
},
set access_c(value) {
//わかりやすいように10倍に計算する
var sub_c = value * 10;
this.c = sub_c;
},
}
//呼び出す時の書き方
console.log(test.access_c); //出力結果「30」
//testオブジェクトのセッタプロパティに対して値を代入
test.access_c = 50;
console.log(test.access_c); //出力結果「500」
上記のようにセッターメソッドを使う時は、オブジェクトのプロパティに対して値を代入するように書きます。
例ではわかりやすいように、セッターメソッド内で値を10倍にして返しています。
セッターに値を入れた後に、改めてゲッターメソッドを使うと、出力結果は計算された結果が返ってきます。