ユーザ用ツール

サイト用ツール


javascript:ecmascript5th

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

次のリビジョン
前のリビジョン
javascript:ecmascript5th [2011/12/25 17:24] – 作成 nullponjavascript: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();  // "ほげ" 
-</code> 
- 
-===== Object.defineProperty ===== 
-==== プロパティを定義 ==== 
-<code javascript> 
-var a = {}; 
-Object.defineProperty(a. "hoge", { 
-  value: "ほげ" 
-}); 
-console.log(a.hoge);   // "ほげ" 
-</code> 
- 
-==== writable属性 ==== 
-デフォルトのwritable属性はfalseで、上書き不可のプロパティとなる。 
-<code javascript> 
-var a = {}; 
-Object.defineProperty(a, "hoge", { 
-  value: "ほげ" 
-}); 
-a.hoge = "ふが";       // 上書きできない! 
-console.log(a.hoge);   // "ほげ" 
-</code> 
- 
-<code javascript> 
-var a = {}; 
-Object.defineProperty(a, "hoge", { 
-  value: "ほげ", 
-  writable: true 
-}); 
-a.hoge = "ふが"; 
-console.log(a.hoge);   // "ふが" 
-</code> 
- 
-==== enumerable属性 ==== 
-デフォルトのenumerable属性はfalseで、for in ループで列挙されない。 
-<code javascript> 
-var a = {}; 
-Object.defineProperty(a, "hoge", { 
-  value: "ほげ" 
-}); 
-for (var i in a) { 
-   console.log(i + ":" + a[i]);   // 何も表示されない! 
-} 
-</code> 
- 
-<code javascript> 
-var a = {}; 
-Object.defineProperty(a, "hoge", { 
-  value: "ほげ", 
-  enumerable: true 
-}); 
-for (var i in a) { 
-   console.log(i + ":" + a[i]);   // hoge:"ほげ" が出力される 
-} 
-</code> 
- 
-==== configurable属性 ==== 
-デフォルトのconfigurable属性はfalseで、deleteできない。 
-<code javascript> 
-var a = {}; 
-Object.defineProperty(a, "hoge", { 
-  value: "ほげ" 
-}); 
-console.log(a.hoge);  // "ほげ" 
-delete a.hoge;        // hogeを削除できない 
-console.log(a.hoge);  // "ほげ" 
-</code> 
- 
-<code javascript> 
-var a = {}; 
-Object.defineProperty(a, "hoge", { 
-  value: "ほげ", 
-  configurable: true 
-}); 
-console.log(a.hoge);  // "ほげ" 
-delete a.hoge;        // hogeを削除できる 
-console.log(a.hoge);  // undefined 
-</code> 
- 
- 
- 
-==== セッタ、ゲッタを定義 ==== 
-<code javascript> 
-var a = {}; 
-Object.defineProperty(a, "hoge", { 
-  set: function(_hoge){ this._hoge = _hoge + 1; }, 
-  get: function() { return this._hoge + 1; }, 
-}); 
-a.hoge = 1 
-console.log(a.hoge);   // 3; 
-</code> 
- 
-注意、以下の例はセッタ内でセッタを呼ぶ事になり、無限再帰でエラー。 
- 
-<code javascript> 
-var a = {}; 
-Object.defineProperty(a, "hoge", { 
-  set: function(hoge){ this.hoge = hoge; }, 
-  get: function() { return this.hoge; }, 
-}); 
-</code> 
- 
-セッタ、ゲッタを定義した場合は writable, configurable, value を定義できない。 
  
javascript/ecmascript5th.1324833886.txt.gz · 最終更新: 2011/12/25 17:24 by nullpon