원시 타입의 값은 변경 불가능한 값(immutable value) 이지만 객체 타입의 값은 변경 가능한 값(mutable value) 이다.
인스턴스
클래스에 의해 생성되어 메모리에 저장된 실체.
객체는 클래스와 인스턴스를 포함한 개념이고, 클래스는 인스턴스를 생성하기 위한 템플릿의 역할을 한다.
객체 리터럴은 중괄호({…}) 내에 0개 이상의 프로퍼티를 정의해 객체를 생성하는 방법이다.
자바스크립트 엔진은 변수에 할당되는 시점에 객체 리터럴을 해석해 객체를 생성한다.
따라서 우리는 객체 생성을 위해 클래스를 정의하고 new 연산자와 함께 생성자를 호출할 필요가 없다.
객체는 프로퍼티의 집합이며, 프로퍼티는 키와 값으로 구성된다.
객체에 존재하지 않는 프로퍼티에 접근하면 undefined
를 반환한다.
원시값은 변경 불가능한 값이다.
변경 불가능 하다는 것은 변수가 아닌 값에 대한 진술이다. 즉 변수는 언제든지 재할당을 통해 변수 값을 변경 할 수 있다.
불변성을 갖는 원시값을 할당한 변수는 재할당 이외에 변수값을 변경할 수 있는 방법이 없다.