最終更新日 2024-09-25
~文法メモ~ オブジェクト初期化、プロパティ
オブジェクトのプロパティの部分は[...]で囲んでおけば、「式」を書いても良い
以前なら、
let i = 100;
let o = {
["foo" + "100"]: 10,
["bar" + 100]: 20,
[i * i]: 30,
[(x => x*x)(10)] : 50
};
hm.debuginfo(o);
新たに追加されたオブジェクト初期化構文
以前なら、
var a = "foo",
b = 42,
c = {};
var o = {
a: a,
b: b,
c: c
};
hm.debuginfo(o) // {"a":"foo","b":42,"c":{}}
とする必要があったところをES6では、
var a = "foo",
b = 42,
c = {};
let o = { a, b, c }; // {"a":"foo","b":42,"c":{}}
hm.debuginfo(o)
とすることが出来るようになりました。
関数も自然に定義出来る
以前なら
let myobj = {
yy : 10,
mymethod : function(x) { return x + 1 }
}
hm.debuginfo(myobj.mymethod(100));
とする必要があったところをES6では、
let myobj = {
yy : 10,
mymethod(x) { return x + 1 }
}
hm.debuginfo(myobj.mymethod(100));
というように自然な記述で定義できます。
C#のようなプロパティ(getter/setter)
ES6の新機能というわけではないですが、「オブジェクト」もしくは「クラス」にて
「C#のようなプロパティ(getter/setter)」を利用することが出来ます。
クラスについては、別ページで解説されています。
let myobj = {
get count() {
return this._count;
},
set count(value) {
this._count = value;
}
}
myobj.count = 10;
hm.debuginfo(myobj.count);
myobj.count++;
hm.debuginfo(myobj.count);
class MyObjClass {
get count() {
return this._count;
}
set count(value) {
this._count = value;
}
}
let myobj = new MyObjClass();
myobj.count = 10;
hm.debuginfo(myobj.count);
myobj.count++;
hm.debuginfo(myobj.count);