javascript:ecmascript5th
差分
このページの2つのバージョン間の差分を表示します。
| 次のリビジョン | 前のリビジョン | ||
| javascript:ecmascript5th [2011/12/25 17:24] – 作成 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); | ||
| - | </ | ||
| - | |||
| - | |||
| - | |||
| - | ==== セッタ、ゲッタを定義 ==== | ||
| - | <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); | ||
| - | </ | ||
| - | |||
| - | 注意、以下の例はセッタ内でセッタを呼ぶ事になり、無限再帰でエラー。 | ||
| - | |||
| - | <code javascript> | ||
| - | var a = {}; | ||
| - | Object.defineProperty(a, | ||
| - | set: function(hoge){ this.hoge = hoge; }, | ||
| - | get: function() { return this.hoge; }, | ||
| - | }); | ||
| - | </ | ||
| - | |||
| - | セッタ、ゲッタを定義した場合は writable, configurable, | ||
javascript/ecmascript5th.1324833886.txt.gz · 最終更新: by nullpon