以前なら、
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));
というように自然な記述で定義できます。
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);