javascript:ecmascript5th
差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
javascript:ecmascript5th [2012/01/24 00:54] – [setter, getterを定義] nullpon | javascript:ecmascript5th [2014/01/04 13:17] (現在) – 名前変更のため削除 nullpon | ||
---|---|---|---|
行 1: | 行 1: | ||
- | ====== ECMAScript 5th ====== | ||
- | ECMAScript 5thで追加された仕様についてメモ、少しずつ追加していきます。 | ||
- | |||
- | ===== Object.create ==== | ||
- | <code javascript> | ||
- | var a = Object.create({ | ||
- | hoge: " | ||
- | getHoge: function() { return this.hoge } | ||
- | }); | ||
- | |||
- | a.getHoge(); | ||
- | </ | ||
- | |||
- | ===== Object.defineProperty ===== | ||
- | ==== プロパティを定義 ==== | ||
- | <code javascript> | ||
- | var a = {}; | ||
- | Object.defineProperty(a. " | ||
- | value: " | ||
- | }); | ||
- | console.log(a.hoge); | ||
- | </ | ||
- | |||
- | ==== writable属性 ==== | ||
- | デフォルトのwritable属性はfalseで、上書き不可のプロパティとなる。 | ||
- | <code javascript> | ||
- | var a = {}; | ||
- | Object.defineProperty(a, | ||
- | value: " | ||
- | }); | ||
- | a.hoge = " | ||
- | console.log(a.hoge); | ||
- | </ | ||
- | |||
- | <code javascript> | ||
- | var a = {}; | ||
- | Object.defineProperty(a, | ||
- | value: " | ||
- | writable: true | ||
- | }); | ||
- | a.hoge = " | ||
- | console.log(a.hoge); | ||
- | </ | ||
- | |||
- | ==== enumerable属性 ==== | ||
- | デフォルトのenumerable属性はfalseで、for in ループで列挙されない。 | ||
- | <code javascript> | ||
- | var a = {}; | ||
- | Object.defineProperty(a, | ||
- | value: " | ||
- | }); | ||
- | for (var i in a) { | ||
- | | ||
- | } | ||
- | </ | ||
- | |||
- | <code javascript> | ||
- | var a = {}; | ||
- | Object.defineProperty(a, | ||
- | value: " | ||
- | enumerable: true | ||
- | }); | ||
- | for (var i in a) { | ||
- | | ||
- | } | ||
- | </ | ||
- | |||
- | ==== configurable属性 ==== | ||
- | デフォルトのconfigurable属性はfalseで、deleteできない。 | ||
- | <code javascript> | ||
- | var a = {}; | ||
- | Object.defineProperty(a, | ||
- | value: " | ||
- | }); | ||
- | console.log(a.hoge); | ||
- | delete a.hoge; | ||
- | console.log(a.hoge); | ||
- | </ | ||
- | |||
- | <code javascript> | ||
- | var a = {}; | ||
- | Object.defineProperty(a, | ||
- | value: " | ||
- | configurable: | ||
- | }); | ||
- | console.log(a.hoge); | ||
- | delete a.hoge; | ||
- | console.log(a.hoge); | ||
- | </ | ||
- | |||
- | |||
- | |||
- | ==== setter, getterを定義 ==== | ||
- | <code javascript> | ||
- | var a = {}; | ||
- | Object.defineProperty(a, | ||
- | set: function(_hoge){ this._hoge = _hoge + 1; }, | ||
- | get: function() { return this._hoge + 1; }, | ||
- | }); | ||
- | |||
- | a.hoge = 1; | ||
- | console.log(a.hoge); | ||
- | </ | ||
- | |||
- | 注意、以下の例はsetter内で自分自身を呼ぶ事になり、無限再帰でエラーとなる。 | ||
- | |||
- | <code javascript> | ||
- | var a = {}; | ||
- | Object.defineProperty(a, | ||
- | set: function(hoge){ this.hoge = hoge; }, // これはだめ | ||
- | get: function() { return this.hoge; }, | ||
- | }); | ||
- | </ | ||
- | |||
- | setter, getterを定義した場合は writable, configurable, | ||
javascript/ecmascript5th.1327366491.txt.gz · 最終更新: 2012/01/24 00:54 by nullpon