~文法メモ~ オブジェクト初期化、プロパティオブジェクトのプロパティの部分は[...]で囲んでおけば、「式」を書いても良い以前なら、 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の新機能というわけではないですが、「オブジェクト」もしくは「クラス」にて 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); |