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 · 最終更新: 2011/12/25 17:24 by nullpon