オブジェクト

オブジェクトは波括弧{...} と任意のプロパティの一覧から成り立つ。

プロパティはkey:value ペアで成り立つ

let user = new Object();
let user = {};

リテラルとプロパティ

let user = {
	name: 'takumi',
	age: 26,
	'likes birds': true  // 複数語のプロパティ名は引用符で囲む
};

// オブジェクトの取得
console.log(user.name); // takumi

// プロパティの追加
user.isAdmin = true;

// プロパティの削除
delete user.age;

// 複数後のプロパティを取得する場合
console.log(user['likes birds']) // true

プロパティの短縮構文

実際のコードでは、既存の変数をプロパティ名として使用することもある

function makeUser(name, age) {
	return {
		name: name,
		age: age,
	}
}

let user = makeUser('takumi', 26);
console.log(user.name); // takumi

メソッドの引数とプロパティの変数名が同じ場合は短縮して書くことができる

function makeUser(name, age) {
	return {
		name,
		age,
	}
}

プロパティ存在チェック、in 演算子

存在しないプロパティへのアクセスは単にundifinedを返すだけ

プロパティの存在チェックを行うにはin 演算子を使う

let user = { name: 'takumi', age: 26 };

'name' in user; // true
'address' in user; // false

オブジェクト参照とコピー

オブジェクトは参照によってコピーされるが、プリミティブ値(文字列、数値など)は常に値としてコピーされる

オブジェクトに割り当てられた変数は、オブジェクト自体ではなく、'メモリ上のアドレス'つまり、オブジェクトへの参照を格納している