知らないことが多くて悲しくなってきた
define_object
// オブジェクトを作成する方法
var newObject = {};
var newObject = new Object();
// オブジェクトにキーを割り当てる方法
// ドット構文
newObject.someKey = "Hello World";
// 角括弧構文
newObject["someKey"] = "Hello World";
// ES5に準拠した書き方(まだサポートしていないブラウザも)
// data propertyの定義
Object.defineProperty( newObject, "someKey", {
value: "hoge hoge",
writable: true,
enumerable: true,
configurable: true
});
// writable : false で書き換え不可
// emutable : false でfor in ループ中に値が現れない
// configuable : false でdelete不可、value以外の属性変更不可
// 簡略化
var defineProp = function(obj, key, value){
config.value = value;
Object.defineProperty(obj, key, config);
}
// 使うには
var person = Object.create(null);
// プロパティーでオブジェクトを追加
defineProp(person, "car", "Delorean");
defineProp(person, "dateOfBirth", "1981");
// definePropertiesを使えば複数登録も可能
Object.defineProperties(newObject, {
someKey: {
value: "hoge",
writable: true
},
anotherKey: {
value: "piyo",
writable: true
}
});
// 継承できる
var driver = Object.create(person);
defineProp(driver, "topSpeed", "100mph");
console.log(driver.dateOfBirth); // 1981