新品価格 |
[書評]オブジェクト指向javascriptの原則 2章を読んだ
の続編
3章は、オブジェクト
以下、3章
・プロパティの存在確認
var person1 = {
name : "person1",
say : function() {
console.log("aaa");
}
};
console.log("name" in person1);
console.log("say" in person1);
・プロパティの存在確認2
console.log("toString" in person1); //true
console.log(person1.hasOwnProperty("toString")); //false
toStringはperson1のプロパティじゃないのでfalse
・プロパティの削除
delete person1.name
console.log(person1.name); //undefined
・プロパティの列挙
for (var property in person1) {
console.log("name:"+property);
console.log("value:"+person1[property]);
}
・プロパティの列挙2
Object.keys()を使う
これはECMA5で追加された
var property = Object.keys(person1);
var i, len;
for (i=0, len=property.length;i<len;i++) {
console.log("name:"+property[i]);
console.log("value:"+person1[property[i]]);
}
・getとset
ECMA5でgetとsetが使えるようになった。
うおーまじかーこれ全く知らなかった
var person2 = {
_name: "person2",
get name() {
console.log("get");
return this._name;
},
set name(value) {
console.log("set");
this._name = value;
}
};
console.log(person2.name); //getが呼ばれる
person2.name = "George";
console.log(person2.name); //setが呼ばれる
・拡張不可
var person3 = {
name: "person3"
};
console.log(Object.isExtensible(person3));
Object.preventExtensions(person3);
console.log(Object.isExtensible(person3));
・seal
値の変更はできる
Object.seal(person3);
・freeze
値の変更もできない
Object.freeze(person3);
本章も大変ためになりました。
ゲッターセッター追加されたんですね
ECMA5どこかでまとめて勉強しておきたい
まだまだjs修行は続くよ!
タグ:javascript