티스토리 뷰

[딥다이브] 10. 객체 리터럴

codeyun2 2023. 12. 3. 17:13

자바스크립트는 객체 기반의 프로그래밍 언어

 

원시 값(원시 타입의 값)

: 변경 불가능

 

10.1 객체(객체 타입의 값)

- 변경 가능

- 0개 이상의 프로퍼티/메서드로 구성된 집합

- 프로퍼티는 키와 값으로 구성

- 함수도 값으로 취급 가능(일반 함수와 구별하기 위해 함수가 값인 경우 메서드라 부름)

- 상태(프로퍼티)와 동작(메서드)을 하나의 단위로 구조화할 수 있어 유용함

 

프로퍼티: 객체의 상태를 나타내는 값(data)

메서드: 프로퍼티(상태 데이터)를 참조하고 조작할 수 있는 동작(behavior)

 

10.2 객체 리터럴에 의한 객체 생성

C++이나 자바 같은 클래스 기반 객체지향 언어는 클래스를 사전에 정의하고 필요한 시점에 new 연산자와 함께 생성자를 호출하여 인스턴스를 생성하는 방식으로 객체를 생성

 

자바스크립트는 프로토타입 기반 객체지향 언어로 클래스 기반 객체지향 언어와 달리 다양한 객체 생성 방법을 지원

- 객체 리터럴

: 중괄호 내에 0개 이상의 프로퍼티를 정의, 변수에 할당되는 시점에 자바스크립트 엔진이 객체 리터럴을 해석해 객체를 생성

- Object 생성자 함수

- 생성자 함수

- Object.create 메서드

- 클래스(ES6)

 

10.3 프로퍼티

프로퍼티 키: 빈 문자열을 포함하는 모든 문자열 또는 심벌 값

프로퍼티 값: 자바스크립트에서 사용할 수 있는 모든 값

 

빈 문자열은 프로퍼티 키로 사용해도 에러가 발생하지 않지만 키로서 의미를 가지지 못하므로 권장하지 않음

프로퍼티 키에 문자열과 심벌 값이 아닌 값을 사용하면 암묵적 타입 변환을 통해 문자열로 바뀜

var나 function같은 예약어를 사용해도 에러가 발생하지 않지만 예상치 못한 에러가 발생할 수 있으니 권장하지 않음

 

 

10.9.3 메서드 축약 표현

const obj = {
  sayHi: function() {
    console.log('Hi');
  }
};

// ES6
const obj = {
  sayHi () {
    console.log('Hi');
  }
};

 

ES6의 메서드 축약 표현으로 정의한 메서드는

프로퍼티에 할당한 함수와 다르게 동작함 → 26.2절 '메서드'에서 계속

댓글
공지사항