본문 바로가기

JavaScript

[JS] 모던 자바스크립트 - 06. 객체 리터럴

728x90
반응형

객체


- 자바스크립트는 프로토타입 기반 객체지향 언어로, 다양한 객체 생성방법을 지원(객체 리터럴, Object 생성자 함수, 생성자 함수, Object.create 메서드, 클래스(ES6))

- 원시 값을 제외한 나머지값은 모두 객체(함수, 배열, 정규 표현식 등)

- 원시 값은 변경 불가능한 값(immutable value)이지만 객체는 변경 가능한 값(mutable value)

- 함수는 일급객체이므로 값으로 취급할 수 있음

- 객체는 프로퍼티메서드로 구성된 집합체

- 인스턴스란 클래스에 의해 생성되어 메모리에 저장된 실체

- 객체 리터럴은 중괄호({...}) 내에 0개 이상의 프로퍼티를 정의

- 변수에 할당되는 시점에 객체 리터럴을 해석해 객체를 생성

- 객체 리터럴의 중괄호는 코드 블록을 의미하지 않음, 세미 콜론을 붙인다

 

프로퍼티


- 객체는 프로퍼티의 집합, 프로퍼티는 키와 값으로 구성

- 프로퍼티 키는 문자열, 따옴표로 묶어야 함, 자바스크립트의 식별자 네이밍 규칙을 준수한다면 따옴표 생략 가능

- 프로퍼티 키로 사용할 표현식을 대괄호([...])로 묶으면 프로퍼티 키를 동적으로 생성 가능

- 프로퍼티 키에 문자열이나 심벌 값 외의 값을 사용 시 문자열로 암묵적 타입 변환

- 존재하는 프로퍼티 키를 중복 선언 시 나중에 선언한 프로퍼티가 먼저 선언한 프로퍼티를 덮어씀

- 프로퍼티의 값이 함수일 경우 일반 함수와 구분하기 위해 메서드(method)라 부름, 메서드는 객체에 묶여 있는 함수를 의미

- 메서드 내부에서 사용한 this 키워드는 객체 자신이다

- 대괄호 프로퍼티 접근 연산자 내부에 지정하는 프로퍼티 키는 반드시 문자열이어야 함

- 객체에 존재하지 않는 프로퍼티에 접근 시 undefined 반환

- 프로퍼티의 키가 식별자 네이밍 규칙을 준수하지 않는 이름이면 반드시 대괄호 표기법 사용

- 프로퍼티 키가 숫자로 이뤄진 문자열인 경우 따옴표 생략 가능

- 존재하지 않는 프로퍼티에 값 할당 시 프로퍼티가 동적으로 생성되어 추가되고 프로퍼티 값이 할당

- delete 연산자는 객체의 프로퍼티를 삭제, 존재하지 않는 프로퍼티 삭제 시 에러 없음

- ES6에서는 프로퍼티 값으로 변수를 사용하는 경우 변수 이름과 프로퍼티 키가 동일한 이름일 때 프로퍼티 키 생략 가능. 프로퍼티 키는 변수 이름으로 자동 생성

// ES6
let x = 1, y = 2;

// 프로퍼티 축약 표현
const obj = { x, y };

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

 

 

 

 

 

출처

- 모던 자바스크립트 Deep Dive - 자바스크립트의 기본 개념과 동작 원리

728x90
반응형