자바스크립트 엔진은 프로퍼티를 생성할 때 프로퍼티의 상태를 나타내는 프로퍼티 어트리뷰트를 기본값으로 자동 정의한다. 프로퍼티의 상태는 값, 갱신 가능 여부, 열거 가능 여부, 재정의 가능 여부를 말한다.
프로퍼티는 데이터 프로퍼티와 접근자 프로퍼티로 구분된다. 데이터 프로퍼티는 일반적인 프로퍼티이며, 접근자 프로퍼티는 자체적으로 값을 가지지 않고 다른 데이터 프로퍼티의 값을 읽거나 저장할 때 사용하는 접근자 함수로 구성된 프로퍼티이다.
프로퍼티 정의란 새로운 프로퍼티를 추가하면서 프로퍼티 어트리뷰트를 정의하거나, 기존 프로퍼티의 어트리뷰트를 재정의하는 것을 말한다. Object.defineProperty 메서드를 사용하면 프로퍼티 어트리뷰트를 정의할 수 있다.
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty
Object.defineProperty() - JavaScript | MDN
Object.defineProperty() 정적 메서드는 객체에 새로운 속성을 직접 정의하거나 이미 존재하는 속성을 수정한 후, 해당 객체를 반환합니다.
developer.mozilla.org
객체는 변경 가는한 값이므로 재할당 없이 직접 변경이 가능하다. 자바스크립트는 객체의 불변성을 위한 다양한 메서드를 제공한다. 객체의 확장을 방지하는 Object.preventExtensions, 객체의 프로퍼티 추가, 삭제, 속성 변경을 막는 Object.seal, 객체를 읽기 전용으로 변경하는 Object.freeze 메서드가 있다.
'Javascript' 카테고리의 다른 글
모던 자바스크립트 Deep Dive 읽기 - 18장 : 함수와 일급 객체 (0) | 2022.03.31 |
---|---|
모던 자바스크립트 Deep Dive 읽기 - 17장 : 생성자 함수에 의한 객체 생성 (0) | 2022.03.31 |
모던 자바스크립트 Deep Dive 읽기 - 15장 : let, const 키워드와 블록 레벨 스코프 (0) | 2022.03.17 |
모던 자바스크립트 Deep Dive 읽기 - 14장 : 전역 변수의 문제점 (0) | 2022.03.17 |
모던 자바스크립트 Deep Dive 읽기 - 13장 : 스코프 (0) | 2022.03.16 |