자바스크립트 객체 알아보기 [모던 자바스크립트 Deep Dive : 10장]

조성원·2023년 3월 8일
0
post-thumbnail

객체의 정의


자바스크립트는 '객체' 기반 언어입니다.
객체는 프로퍼티와 메서드로 구성된 집합체입니다.

  • 프로퍼티: 객체의 상태를 나타내는 값
  • 메서드: 프로퍼티(상태)를 참조하고, 조작할 수 있는 동작
let person = {
name: 'Lee',
age: 20, // (키: 값)으로 구성된 프로퍼티
};

객체를 통해 상태와 동작을 하나의 단위로 구조화할 수 있습니다.


객체를 만드는 방식에는 여러가지가 있지만,
'객체 리터럴' 방식이 주로 쓰입니다.

객체 리터럴 방식은 객체를 {} 중괄호 안에서 정의합니다.

let person = {
name: 'Lee',
age: 20,
};

console.log(person) // {name: 'Lee', age: 20}

프로퍼티


객체는 프로퍼티의 집합이며, 프로퍼티는 으로 구성됩니다.

프로퍼티 키는 식별자 네이밍 규칙에 따라 차이가 있습니다.

let person = {
firstname: 'Sungwon', // 식별자 네이밍 규칙을 준수하는 프로퍼티 키
'last-name': 'Jo', // 식별자 네이밍 규칙을 준수하지 않는 프로퍼티 키
};
  • 식별자 네이밍 규칙 준수 > '' 따옴표 필요 X
  • 식별자 네이밍 규칙 준수 X > '' 따옴표 필요

프로퍼티 접근


프로퍼티에 접근하는 방법은 두 가지입니다.

  • 마침표 표기법
  • 대괄호 표기법
let person = {
name: 'Lee',
};

console.log(person.name); // 마침표 표기법
console.log(person['name']); // 대괄호 표기법

대괄호 표기법의 경우, 프로퍼티 키를 반드시 따옴표로 감싼 문자열이어야 합니다. (그렇지 않을 경우, undefined를 반환합니다.)


프로퍼티 갱신


마침표 표기법대괄호 표기법으로 갱신할 수 있습니다.

let person = {
name: 'Lee',
};

person.name = 'Jo'; // 마침표 표기법으로 갱신
person['name'] = 'Jo'; // 대괄호 표기법으로 갱신
console.log(person); // {name: 'Jo'}

프로퍼티 동적 생성 (추가)


존재하지 않은 프로퍼티에 값을 마침표 표기법대괄호 표기법으로 추가할 수 있습니다.

let person = {
name: 'Lee',
};

person.age = 20; // 마침표 표기법으로 생성
person.gender = 'Male'; // 대괄호 표기법으로 생성
console.log(person); // {name: 'Lee', age: 20, gender: 'Male'}

프로퍼티 삭제


delete 연산자로 삭제할 수 있습니다.

let person = {
name: 'Lee',
age: 20
};

delete person.age;

console.log(person); // {name: 'Lee'}

메서드


프로퍼티의 값이 함수일 경우, 일반 함수와 구분하기 위해 메서드라고 부릅니다.

즉, 메서드는 객체 안에 있는 함수를 의미합니다.

let obj = {
	sayHello = function () {
		return 'Hello JS!';
    }
};

console.log(obj.sayHello()); // Hello JS!

ES6에서 추가된 객체 리터럴 기능


프로퍼티 축약 표현

변수를 활용하여 프로퍼티를 축약 표현할 수 있습니다.

let x = 1, y = 2;

let obj = {
x: x,
y: y
};

console.log(obj); // {x: 1, y: 2}

계산된 프로퍼티 이름

프로퍼티 키와 값을 생성할 때, 변수를 활용해서 계산된 결과로 생성할 수 있습니다.

let prefix = 'prop';
let i = 0;

let obj = {};

obj[prefix + '-' + ++i] = i;
obj[prefix + '-' + ++i] = i;
obj[prefix + '-' + ++i] = i;

console.log(obj); // {prop-1: 1, prop-2: 2, prop-3: 3}

메서드 축약 표현

메서드를 축약하여 표현 가능합니다.

  • ES6 이전
let obj = {
	sayHello = function () {
		return 'Hello JS!';
    }
};

console.log(obj.sayHello()); // Hello JS!
  • ES6 이후
let obj = {
	// 메서드 축약 표현
	sayHello() {
		return 'Hello JS!';
    }
};

console.log(obj.sayHello()); // Hello JS!
profile
IT 트렌드에 관심이 많은 프론트엔드 개발자

0개의 댓글