{ }
사용const player = {
name: "Bob",
points: 10,
hair: "short",
};
const obj1 = {}; // 'object literal' syntax const obj2 = new Object(); // 'object constructor' syntax
object.property
,object["propterty"]
: property의 value에 접근console.log(player.name); // "Bob" console.log(player["name"]); // "Bob"
- value에 값 더하기
player.points = player.points + 14; player.hair += " dark"; console.log(player.points); // 24 console.log(player.hair); // "short dark"
- property 추가하기
player.lastName = "Smith"; // player["lastName"] = "Smith";
*
const
로 선언한 object인 player는 바꿀 수 없지만 그 안의 property는 변경, 추가 가능
delete
: property 삭제하기delete player.lastName; console.log(player); // {name: "Bob", points: 24, hair: 'short dark'}
function printValue(obj, key){
console.log(obj.key);}
printValue(player, 'name'); // undefined
function printValue(obj, key){
console.log(obj[key]);}
printValue(player, 'name'); // "Bob"
player.key
의 value를 가져오는 명령이기 때문에 undefined 출력function makePerson(name, age) {
return {
name: name,
age: age,
// name, age
};
}
const person1 = new Person('jane', 20); // new 생성자로 Class를 만드는 것처럼 Object 생성
function Person(name, age) {
this.name: name,
this.age: age,
}
해당 객체에 특정 property가 있는지 확인할 때 사용
'name' in player; // true
'birthDay' in player; // false
const superman = {
name : 'clark',
age : 33,
};
for(let key in superman){
console.log(key); // name, age
console.log(superman[key]); // 'clark', '33'
}
✍ in 연산자 활용
function isAdult(user){ if(user.age < 20){ return false; } return true; } // user의 age 속성이 20보다 작으면 false 반환, 아닌 경우 true 반환 const Jane = { name: 'Jane', age: 10, } const Tom = { name: 'Tom', } //age 속성 없음 console.log(isAdult(Jane)); // false console.log(isAdult(Tom)); // true
❌
Tom.age
는undefined
이기 때문에return true;
로 넘어감
=> age 속성이 없으면 false를 반환하도록 수정해야함function isAdult(user){ if(!('age' in user) || user.age < 20){ return false; } else {return true} }
*
!('age' in user)
의 값은 user에 age 속성이 없으면 true
const user = { name: "Bob", points: 10, }; const user2 = user;
위 예시의 경우 user2의 property를 변경하면 user의 property도 바뀜
const user = {
name: "Bob",
points: 10,
};
const user2 = Object.assign({}, user);
console.log(user2); // { name: "Bob", points: 10}
Object.assign
은 첫 번째 인자인 객체에 두 번째 인자인 객체의 property를 복사한 후 반환함const fruit1 = { color: 'red'};
const fruit2 = { color: 'blue', size: 'big'};
const mixed = Object.assign({}, fruit1, friut2);
console.log(mixed.color); // 'blue'
console.log(mixed.size); // 'big'