オブジェクトは波括弧{...}
と任意のプロパティの一覧から成り立つ。
プロパティは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,
}
}
存在しないプロパティへのアクセスは単にundifined
を返すだけ
プロパティの存在チェックを行うにはin
演算子を使う
let user = { name: 'takumi', age: 26 };
'name' in user; // true
'address' in user; // false
オブジェクトは参照によってコピーされるが、プリミティブ値(文字列、数値など)は常に値としてコピーされる
オブジェクトに割り当てられた変数は、オブジェクト自体ではなく、'メモリ上のアドレス'つまり、オブジェクトへの参照を格納している