자바스크립트는 프로퍼티 생성 시 프로퍼티의 상태를 나타내는 프로퍼티 어트리뷰트를 자동으로 정의해준다.
Object.getOwnPropertyDescripto메서드를 통해 프로퍼티 어트리뷰트의 정보를 제공하는 프로퍼티 디스크립터 객체를 반환한다.
Value - 프로퍼티 키를 통해 프로퍼티 값에 접근하면 반환되는 값
Writable – 프로퍼티 값의 변경 여부를 나타내며, false인 경우 해당 프로퍼티의 Value 값을 변경할 수 없다.
Enumerable – 프로퍼티의 열거 가능 여부를 나타내며, false 인 경우 for..in 또는 object.keys 메서드로 열거할 수 없다.
Configurable – 프로퍼티의 재정 가능 여부를 나타내며, false인 경우 해당 프로퍼티의 삭제와 프로퍼티 어트리뷰트 값을 변경할 수 없다.
get – 접근자 프로퍼티를 통해서 데이터 프로퍼티의 값을 읽을 때 호출되는 접근자.
set – 접근자 프로퍼티를 통해 데이터 프로퍼티의 값을 저장할 때 호출되는 접근자 함수
Enumerable – 데이터 프로퍼티와 동일
Configurable – 데이터 프로퍼티와 동일
객체 확장 금지
-> Object.preventExtensions을 통해 객체의 확장을 금지시킴. 금지된 객체는 프로퍼티 추가가 불가능하다.
객체 밀봉 금지
-> Object.seal 메서드를 통해 객체를 밀봉시킨다. 밀봉된 객체는 읽기와 쓰기만 가능하며, 밀봉 여부는 Object.isSealed 메서드로 확인한다.
객체 동결
-> Object.freeze 메서드로 객체를 동결하며, 동결된 객체는 읽기만 가능하다. 동결 여부는 Object.isFrozen 메서드로 확인한다.