home강의 홈으로
Section 5. 객체와 클래스
Lesson 1. 객체의 기본 사용법들

I. 객체 생성과 프로퍼티 접근

const food1 = { name: '햄버거', price: 5000, vegan: false }; console.log(food1); console.log( food1.name, // 💡 마침표 프로퍼티 접근 연산자 food1['price'] // 💡 대괄호 프로퍼티 접근 연산자 );


// 빈 객체 생성 const food2 = {}; console.log(food2); // 프로터피 추가 food2.name = '샐러드'; food2.price = '6000'; food2['vegan'] = true; console.log(food2); // 프로터피 수정 food2['price'] = '6500'; food2.vegan = false; console.log(food2);

💡 식별자 명명 규칙에 벗어나는 키 이름 사용시

const obj = { 1: '하나', // 숫자도 객체의 키로는 사용 가능 'ab-cd': 'ABCD', // 문자 포함 시 키도 따옴표로 감싸야 함 's p a c e': 'Space' } // 대괄호 프로퍼티 접근 연산자로만 가능 console.log( obj[1], obj['ab-cd'], obj['s p a c e'] ); // ⚠️ 오류 발생 // console.log( // obj.1, // obj.ab-cd, // obj.s p a c e // );

표현식으로 키값 정의하기

  • 대괄호 [] 사용
let idx = 0; const obj = { ['key-' + ++idx]: `value-${idx}`, ['key-' + ++idx]: `value-${idx}`, ['key-' + ++idx]: `value-${idx}`, [idx ** idx]: 'POWER' } console.log(obj);

⚠️ 객체나 배열을 키값으로 사용시

const objKey = { x: 1, y: 2 }; const arrKey = [1, 2, 3]; const obj = { [objKey]: '객체를 키값으로', [arrKey]: '배열을 키값으로' } console.log( obj[objKey], obj[arrKey] ); // ⚠️ ??????? console.log( obj[{ a: 1, b: 2, c: 3 }], // 내용이 다른 객체 obj['1,2,3'] // 문자열 ); // 로그를 펼쳐 키값을 볼 것 - 💡 문자열임 // 객체와 배열이 그 자체가 아니라 문자열로 치환되어 키가 되는 것 console.log(obj); console.log( obj['[object Object]'] );
  • 즉 실제로 해당 객체나 배열의 내용이나 참조값이 키가 되는 것이 아님
  • 이후 배울 Map ( 참조값을 키값으로 사용 )과의 차이점




II. 🗑 프로퍼티 삭제 - delete 연산자

const person1 = { name: '홍길동', age: 24, school: '한국대', major: '컴퓨터공학' }; console.log(person1); delete person1.age; console.log(person1); delete person1['major']; console.log(person1); // 💡 오류가 발생하지는 않음 delete person1.hobby; console.log(person1);



III. 키의 동적 사용

const product1 = { name: '노트북', color: 'gray', price: 800000 } function addModifyProperty (obj, key, value) { // obj.key = value; // ⚠️ 의도와 다른 작업 수행 obj[key] = value; } function deleteProperty (obj, key) { // delete obj.key // ⚠️ 의도와 다른 작업 수행 delete obj[key]; } addModifyProperty (product1, 'inch', 16); console.log(product1); addModifyProperty (product1, 'price', 750000); console.log(product1); deleteProperty(product1, 'color'); console.log(product1);



IV. ES6 추가 문법

1. 객체 선언 시 프로퍼티 키와 대입할 상수/변수명이 동일할 시 단축 표현

const x = 1, y = 2; const obj1 = { x: x, y: y } console.log(obj1); const obj2 = { x, y } console.log(obj2);


function createProduct (name, price, quantity) { return { name, price, quantity }; } const product1 = createProduct('선풍기', 50000, 50); const product2 = createProduct('청소기', 125000, 32); console.log(product1, product2);

2. 메서드 method - 객체에 축약표현으로 정의된 함수 프로퍼티

// 일반 함수 프로퍼티 정의 const person = { name: '홍길동', salutate: function (formal) { return formal ? `안녕하십니까, ${this.name}입니다.` : `안녕하세요, ${this.name}이에요.`; } } console.log(person.salutate(true)); // ⭐️ 메서드 정의 const person = { name: '홍길동', salutate (formal) { return formal ? `안녕하십니까, ${this.name}입니다.` : `안녕하세요, ${this.name}이에요.`; } } console.log(person.salutate(true));
  • ⭐ ES6부터는 위의 표현으로 정의된 함수만 메서드라고 부름
  • 일반 함수 프로퍼티와 특성이 다름 - 이후 자세히 배울 것

🤔얄코에게 질문하기질문은 반.드.시 이리로 보내주세요! ( 강의사이트 질문기능 ✖ )

강의에서 이해가 안 되거나 실습상 문제가 있는 부분,
설명이 잘못되었거나 미흡한 부분을 메일로 알려주세요!

답변드린 뒤 필요할 경우 본 페이지에
관련 내용을 추가/수정하도록 하겠습니다.

이메일 주소
yalco@yalco.kr
메일 제목 (반드시 아래 제목을 붙여넣어주세요!)
[질문] 제대로 파는 자바스크립트 (무료 파트) 5-1

🛑질문 전 필독!!

  • 구글링을 먼저 해 주세요. 들어오는 질문의 절반 이상은 구글에 검색해 보면 1분 이내로 답을 찾을 수 있는 내용들입니다.
  • 오류 메시지가 있을 경우 이를 구글에 복붙해서 검색해보면 대부분 짧은 시간 내 해결방법을 찾을 수 있습니다.
  • 강의 페이지에 추가사항 등 놓친 부분이 없는지 확인해주세요. 자주 들어오는 질문은 페이지에 추가사항으로 업데이트됩니다.
  • "유료파트의 강의페이지는 어디 있나요?" - 각 영상의 시작부분 검은 화면마다 해당 챕터의 강의페이지 링크가 있습니다.
  • 질문을 보내주실 때는 문제가 어떻게 발생했고 어떤 상황인지 등을 구체적으로 적어주세요. 스크린샷을 첨부해주시면 더욱 좋습니다.
🌏 Why not change the world?