모던 자바스크립트 Deep Dive #4

SESE·2022년 11월 27일
0

1. 객체

원시 타입의 값은 변경 불가능한 값(immutable value) 이지만 객체 타입의 값은 변경 가능한 값(mutable value) 이다.

인스턴스
클래스에 의해 생성되어 메모리에 저장된 실체.
객체는 클래스와 인스턴스를 포함한 개념이고, 클래스는 인스턴스를 생성하기 위한 템플릿의 역할을 한다.

객체 리터럴은 중괄호({…}) 내에 0개 이상의 프로퍼티를 정의해 객체를 생성하는 방법이다.

자바스크립트 엔진은 변수에 할당되는 시점에 객체 리터럴을 해석해 객체를 생성한다.

따라서 우리는 객체 생성을 위해 클래스를 정의하고 new 연산자와 함께 생성자를 호출할 필요가 없다.

2. 프로퍼티

객체는 프로퍼티의 집합이며, 프로퍼티는 키와 값으로 구성된다.

객체에 존재하지 않는 프로퍼티에 접근하면 undefined 를 반환한다.

3. 원시 타입과 객체 타입의 차이

  • 원시 타입의 값(원시 값)은 변경 불가능한 값이다. 객체 타입(객체)의 값은 변경 가능한 값이다.
  • 원시 값을 변수에 할당하면 변수(확보된 메모리 공간)에는 실제 값이 저장된다. 객체를 변수에 할당하면 변수에는 참조 값이 저장된다.
  • 원시 값을 갖는 변수를 다른 변수에 할당하면 원본의 원시 값이 복사되어 전달된다.(값에 의한 전달) 객체를 가리기는 변수를 다른 변수에 할당하면 원본의 참조 값이 복사되어 전달된다.(참조에 의한 전달)

4. 원시 값

원시값은 변경 불가능한 값이다.

변경 불가능 하다는 것은 변수가 아닌 값에 대한 진술이다. 즉 변수는 언제든지 재할당을 통해 변수 값을 변경 할 수 있다.

불변성을 갖는 원시값을 할당한 변수는 재할당 이외에 변수값을 변경할 수 있는 방법이 없다.

profile
스타트업에서 근무하고 있는 Frontend 개발자 sese

0개의 댓글