// 구조분해문법
const result = {
a : 123,
b : {
c : 135,
d : 146,
}
};
const a = result.a; // 123
const d = result.b.d; // 146
// 아래와 같이 간결하게 작성 가능
const { a, b : {d} } = result
console.log(a); // 123
console.log(d); // 146
// 배열구조분해문법
arr = [1,2,3,4,5]
const x = arr[0];
const y = arr[1];
const z = arr[4];
// 아래와 같이 간결하게 작성 가능
const [x, y, , , z] = arr; // 배열 자리가 똑같아야 함
this가 있는 경우 구조분해할당을 하지 않는다.
const candyMachine = {
status : {
name : "node",
count : 5,
},
getCandy : function(){
this.status.count--;
return this.status.count;
},
};
const getCandy = candyMachine.getCandy();
const count = candyMachine.status.count
console.log(getCandy); // 4
console.log(count); // 4
// const getCandy와 const count에 주목
// candyMachine부터 시작해서 속성을 찾아들어가야 함
const candyMachine = {
status : {
name : "node",
count : 5,
},
getCandy(){
this.status.count--;
return this.status.count;
},
};
const { getCandy , status : {count}} = candyMachine;
console.log(getCandy); // getCandy(){this.status.count--;return this.status.count;}
console.log(count); // 5
// const {변수} = 객체; 로 객체 안의 속성을 변수명으로 사용 가능
// 단, getCandy()를 실행했을 때 결과가 candyMachine.getCandy()와 달라
// count처럼 속성 안의 속성도 변수명으로 사용 가능
// this가 있는 경우 구조분해할당을 하지 않는다.