ecmascript:es5
目次
ECMAScript 5th
ECMAScript 5thで追加された仕様についてメモ、少しずつ追加していきます。
Array
- Array.prototype.forEach
- Array.prototype.every
- Array.prototype.some
- Array.prototype.map
- Array.prototype.filter
String
- String.prototype.trim
Object.create
var a = Object.create({ hoge: "ほげ", getHoge: function() { return this.hoge } }); console.log(a.getHoge()); // "ほげ"
Object.defineProperty
プロパティを定義
var a = {}; Object.defineProperty(a. "hoge", { value: "ほげ" }); console.log(a.hoge); // "ほげ"
writable属性
デフォルトのwritable属性はfalseで、上書き不可のプロパティとなる。
var a = {}; Object.defineProperty(a, "hoge", { value: "ほげ" }); a.hoge = "ふが"; // 上書きできない! console.log(a.hoge); // "ほげ"
var a = {}; Object.defineProperty(a, "hoge", { value: "ほげ", writable: true }); a.hoge = "ふが"; console.log(a.hoge); // "ふが"
enumerable属性
デフォルトのenumerable属性はfalseで、for in ループで列挙されない。
var a = {}; Object.defineProperty(a, "hoge", { value: "ほげ" }); for (var i in a) { console.log(i + ":" + a[i]); // 何も表示されない! }
var a = {}; Object.defineProperty(a, "hoge", { value: "ほげ", enumerable: true }); for (var i in a) { console.log(i + ":" + a[i]); // hoge:"ほげ" が出力される }
configurable属性
デフォルトのconfigurable属性はfalseで、deleteできない。
var a = {}; Object.defineProperty(a, "hoge", { value: "ほげ" }); console.log(a.hoge); // "ほげ" delete a.hoge; // hogeを削除できない console.log(a.hoge); // "ほげ"
var a = {}; Object.defineProperty(a, "hoge", { value: "ほげ", configurable: true }); console.log(a.hoge); // "ほげ" delete a.hoge; // hogeを削除できる console.log(a.hoge); // undefined
setter, getterを定義
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;
setter, getterを定義した場合は writable, configurable, value を定義できない。
以下の例はsetterやgetter内部で自分自身を呼ぶ事になり、無限再帰でエラーとなる。
/* これはだめ */ Object.defineProperty(a, "hoge", { set: function(hoge){ this.hoge = hoge; }, get: function() { return this.hoge; }, });
ecmascript/es5.txt · 最終更新: 2015/10/24 04:32 by nullpon