読者です 読者をやめる 読者になる 読者になる

感謝のプログラミング 10000時間

たどり着いた結果(さき)は、感謝でした。

JavaScriptのオブジェクト

JavaScript
<スポンサーリンク>

1.ポイント

JavaScriptの単純な変数型は、数値、文字列、真偽値、null、undefinedがある
・それ以外は全てオブジェクト
JavaScriptのオブジェクトは参照渡し
JavaScriptのオブジェクトはミュータブル。すなわち、変更可能なデータの集合体
・オブジェクトは複数のプロパティを含むコンテナで、プロパティは名前と値で構成されている。
・すべてのオブジェクトはプロトタイプオブジェクトとリンクしていて、そこからプロパティを継承している
・オブジェクトリテラルによって作られたオブジェクトはすべて、JavaScript標準のObject.prototypeオブジェクトとリンクしている
・オブジェクト自身に指定された名前のプロパティがなかった場合、JavaScriptはプロトタイプオブジェクトからプロパティの値を取得しようとする
・hasOwnPropertyメソッドは、プロとタイムチェーンをさかのぼらない

2.基礎のデモ

//空のオブジェクト
var empty_object = {};

//オブジェクト
var my_friend = {
	"first_name": "Katsuta",
	"last_name": "Hiroyuki",
	"girl_friend": {
		"name": "Sayaka",
		"city": "Tokyo"
	}
};

//値の取得
console.log(my_friend["last_name"]); //Hiroyuki
console.log(my_friend.first_name); //Katsuta
console.log(my_friend.girl_friend.name); //Sayaka

//値の更新
my_friend.girl_friend.city = "Okinawa";
console.log(my_friend.girl_friend.city); //Okinawa

//参照渡し
//my_friendを参照
var x = my_friend;

//xはmy_friendを参照しているので、my_friendにnicknameプロパティが追加される
x.nickname = 'DT men';

var katsuta = my_friend.nickname;
console.log(katsuta); //DT men

console.log(x.hasOwnProperty('girl_friend')); //true
console.log(x.hasOwnProperty('boy_friend')); //false

3.プロパティを列挙する

//参照渡し
//my_friendを参照
var x = my_friend;

//xはmy_friendを参照しているので、my_friendにnicknameプロパティが追加される
x.nickname = 'DT men';

var katsuta = my_friend.nickname;
console.log(katsuta); //DT men

console.log(x.hasOwnProperty('girl_friend')); //true
console.log(x.hasOwnProperty('boy_friend')); //false

//オブジェクトからプロパティを削除する
delete my_friend.nickname

//プロパティを列挙
var prop;
for (prop in my_friend) {
	if (typeof my_friend[prop] !== 'function') {
		console.log(prop + ': ' + my_friend[prop]);
	}
}

プロパティの列挙によって表示されるのは以下のとおりで、deleteによるプロパティの削除もできている。

first_name: Katsuta
last_name: Hiroyuki
girl_friend: [object Object]

参考

以下の本の3章を参考にした。

JavaScript: The Good Parts ―「良いパーツ」によるベストプラクティス

JavaScript: The Good Parts ―「良いパーツ」によるベストプラクティス

薄いながらにJavaScriptの重要ポイントが散りばめられた名著である。