객체 란 key와 value의 페어로 하나의 변수에 여러개의 값을 넣을 수 있다.
let person = {
name : "홍길동",
age : 30,
gender : "남자"
};
function Person (name, age, gender) {
this.name = name;
this.age = age;
this.gender = gender;
}
let person1 = new Person("홍길동",30,"남자");
let person2 = new Person("홍길순",48,"여자");
console.log(person.name); // 홍길동
console.log(person.age); // 30
console.log(person.gender); // 남자
let keys = Object.keys(person);
console.log(keys); // [ 'name', 'age', 'gender' ]
let values = Object.values(person);
console.log(values); // [ '홍길동', 30, '남자']
let entries = Object.entries(person);
console.log(entries); // [ [ 'name', '홍길동' ], [ 'age', 30 ], [ 'gender', '남자' ] ]
let newPerson = {};
Object.assign(newPerson, person);
// Object.assign (어디에 복사할지, 뭘 복사할지)
console.log(nerPerson); // { name: '홍길동', age: 30, gender: '남자' }
Object.assign(newPerson, person, { age : 31 }); // 중괄호를 통해 age 값만 변경해서 복사
console.log(nerPerson); // { name: '홍길동', age: 31, gender: '남자' }
객체는 메모리에 저장할 때 별도의 공간에 저장
-> 그에 대한 주소 값을 각각 가지고 있음 : string, number 처럼 ===로 단순 비교 불가능
let person10 = {
name : "홍길동",
age : 30,
gender : "남자"
}
let person11 = {
name : "홍길동",
age : 30,
gender : "남자"
}
console.log(person10 === person11); // false
// JSON.stringify 문자열로 바꿔줌
console.log(JSON.stringify(person10)===JSON.stringify(person11)); // true
spread operator !!
let person12 = {
name : "홍길동",
age : 30
};
let perosn13 = {
gender : "남자"
};
// ... : spread operator
let perfectMan = {...person12, ...perosn13};
console.log(perfectMan); // { name: '홍길동', age: 30, gender: '남자' }
for- ~in문 으로 접근
객체의 속성을 출력
let person = {
name : "John",
age : 30,
gender : "male"
};
for (let key in person) {
console.log(key + " : " + person[key]);
}
// name : John
//age : 30
// gender : male