var person = { name :"Dongwook", age:30, nationality:"Korea" };console.log(typeof person); //결과) objectconsole.log(person['age']); //결과) 30console.log(person.age); //결과) 30console.log(person['nationality']); //결과) Koreaconsole.log(person.nationality); //결과) Korea
함수에서 객체를 파라미터로 받기
함수를 새로 만들어서 방금 만든 객체를 파라미터로 받아와서 사용해봅시다.
constironMan= { name:'토니 스타크', actor:'로버트 다우니 주니어', alias:'아이언맨'};constcaptainAmerica= { name:'스티븐 로저스', actor:'크리스 에반스', alias:'캡틴 아메리카'};functionprint(hero) {consttext=`${hero.alias}(${hero.name}) 역할을 맡은 배우는 ${hero.actor} 입니다.`;console.log(text);}print(ironMan);print(captainAmerica);
결과물이 다음과 같이 나타나나요?
아이언맨(토니 스타크) 역할을 맡은 배우는 로버트 다우니 주니어 입니다.캡틴 아메리카(스티븐 로저스) 역할을 맡은 배우는 크리스 에반스 입니다.
위 코드에서는 줄이 너무 길어지는것을 방지하기 위하여 ${hero.actor} 가 사용되는 부분에서 새 줄이 입력되었습니다. 이는 없어도 무방합니다만, 코드 샌드박스에서 저장시 자동으로 새 줄을 입력하게 됩니다. 이러한 기능을 방지하고 싶다면, 코드샌드박스 좌측의 설정 아이콘을 누르고 .prettierrc 를 열어서 PrintWidth 를 120 정도로 늘리시면 됩니다.
객체 비구조화 할당
print 함수를 보시면 파라미터로 받아온 hero 내부의 값을 조회 할 때 마다 hero. 를 입력하고 있는데, 객체 비구조화 할당이라는 문법을 사용하면 코드를 더욱 짧고 보기 좋게 작성 할 수 있습니다.
이 문법은 "객체 구조 분해" 라고 불리기도 합니다.
constironMan= { name:'토니 스타크', actor:'로버트 다우니 주니어', alias:'아이언맨'};constcaptainAmerica= { name:'스티븐 로저스', actor:'크리스 에반스', alias:'캡틴 아메리카'};functionprint(hero) {const { alias,name,actor } = hero;consttext=`${alias}(${name}) 역할을 맡은 배우는 ${actor} 입니다.`;console.log(text);}print(ironMan);print(captainAmerica);
똑같은 결과가 나타났나요?
const { alias,name,actor } = hero;
이 코드가 객체에서 값들을 추출해서 새로운 상수로 선언해 주는 것 입니다.
여기서 더 나아가면, 파라미터 단계에서 객체 비구조화 할당을 할 수도 있습니다.
constironMan= { name:'토니 스타크', actor:'로버트 다우니 주니어', alias:'아이언맨'};constcaptainAmerica= { name:'스티븐 로저스', actor:'크리스 에반스', alias:'캡틴 아메리카'};functionprint({ alias, name, actor }) {consttext=`${alias}(${name}) 역할을 맡은 배우는 ${actor} 입니다.`;console.log(text);}print(ironMan);print(captainAmerica);