Q. Object란?
- js date type 중 하나이다.
- object = { key: value }
- key에 상응하는 value가 들어있는 key와 value의 집합체가 object이다.
- property 하나는 key와 value로 이루어져 있다.
1. Literals and properties
const obj1 = {};
const obj2 = new Object();
function print(person){
console.log(person.name);
console.log(person.age);
}
const emma = { name: 'emma', age: '4' };
print(emma);
emma.hasJob = true;
console.log(emma.hasJob);
delete emma.hasJob;
console.log(emma.hasJob);
2. Computed properties 계산된 프로퍼티
- 실시간으로 값을 받아오고 싶은 경우 사용한다.
console.log(emma.name);
console.log(emma['name']);
emma['hasJob'] = true;
console.log(emma.hasJob);
function printValue(obj, key){
console.log(obj[key]);
}
printValue(emma, 'name');
3. Property value shorthand
const person1 = {name: 'bob', age: 2};
const person2 = {name: 'steve', age: 3};
const person3 = {name: 'dave', age: 4};
const person4 = makePerson('jay', 5);
console.log(person4);
function makePerson(name, age){
return{
name,
age
}
}
4. Constructor function 생성자 함수
- class가 없었을 때 사용하던 방법이다.
- 함수명은 대문자로 시작해야 한다.
- class와 같이 호출시 new 키워드를 사용한다.
const person5 = new Person('kane', 6);
function Person(name,age){
this.name=name;
this.age=age;
}
class Person {
constructor (name, age) {
this.name = name;
this.age = age;
}
}
console.log(person5);
5. In operator : property existance check
- 해당하는 object 안에 key가 있는지 없는지 확인하는 방법이다.
console.log('name' in emma);
console.log('random' in emma);
console.log(emma.random);
6. For..in vs For..of
for (const key in emma){
console.log(key);
}
const array = [1, 2, 5, 6];
for (const value of array){
console.log(value);
}
7. Fun cloning
const user = {name: 'emma', age: '20'}
const user2 = user;
user2.name = 'coder';
console.log(user);
const user3 ={};
for (const key in user){
user3[key]=user[key];
}
console.log(user3);
const user4 = Object.assign({}, user);
console.log(user4);
const fruit1 = {color: 'red'};
const furit2 = {color: 'blue', size: 'big'};
const mixed = Object.assign({}, fruit1, furit2);
console.log(mixed.color);
console.log(mixed.size);
얕은 복제, 깊은 복제 참조