728x90
- 프로퍼티의 상태를 나타내는 속성, 자바스크립트 엔진이 프로퍼티를 생성할 때 기본적으로 정의함
- 값(
value
), 갱신 가능 여부(writable
), 일치 가능 여부(enumerable
), 재정의 가능 여부(configurable
)
내부 슬롯, 내부 메서드
- ECMA Script에서 정의된 의사 프로퍼티(
Pseudo property
), 의사 메서드(Pseudo method
) - 자바스크립트 엔진의 내부로직 --> 개발자가 직접 접근 불가능
- 일부 내부 슬롯/메서드에 한해서 간접 참조 제공
- Ex) 모든 객체는 [[prototype]]을 내부 슬롯으로 가짐 -->
__proto__
를 통해서 참조 가능
- Ex) 모든 객체는 [[prototype]]을 내부 슬롯으로 가짐 -->
Property Descriptor
- Property attribute 정보를 제공해주는 객체
Object.getOwnPropertyDescriptor
메서드를 호출하여 인자로 주어진 객체의 어트리뷰트 정보 확인
데이터 프로퍼티, 접근자 프로퍼티
- 데이터 프로퍼티 : 키, 값으로 구성된 보통의 프로퍼티
- 어트리뷰트 :
[[Value]]
,[[Writable]]
,[[Enumerable]]
,[[Configurable]]
- 어트리뷰트 :
- 접근자 프로퍼티 : 데이터 프로퍼티의 값을 조작할 때 사용되는 접근 함수로 구성된 프로퍼티. 자바의 getter, setter와 유사
- 어트리뷰트 :
[[Get]]
,[[Set]]
,[[Enumerable]]
,[[Configurable]]
- 어트리뷰트 :
프로퍼티 정의
- 프로퍼티를 추가하며 어트리뷰트를 명시적으로 정의하거나, 기존의 어트리뷰트를 재정의 하는 행위
Object.defineProperty
메서드를 통해서 정의할 수 있음 --> 이때 디스크립터 객체 일부 생략 가능(기본값 적용)
객체 변경 방지
- 객체 확장 금지
Object.preventExtensions
메서드- 객체는 프로퍼티 추가가 금지됨
Object.isExtensible
메서드를 통해서 금지 여부 확인
- 객체 밀봉
Object.seal
메서드- 객체는 읽기, 쓰기만 가능
Object.isSealed
메서드를 통해서 확인
- 객체 동결
Object.freeze
메서드- 객체는 읽기만 가능
Object.isFrozen
메서드로 확인
- 위의 변경 방지 메서드는 얕은 변경 방지 --> 중첩 객체까지 변경 방지 못해줌
학습 도서
- '모던 자바스크립트 Deep Dive', 이웅모 저, 위키북스
'Language | Basic > JavaScript' 카테고리의 다른 글
[JavaScript 스터디] 함수 객체, 일급 객체 (0) | 2021.01.29 |
---|---|
[JavaScript 스터디] 생성자 함수로 객체 생성 (0) | 2021.01.29 |
[JavaScript 스터디] let, const (0) | 2021.01.24 |
[JavaScript 스터디] 전역 변수 (0) | 2021.01.24 |
[JavaScript 스터디] 스코프 (0) | 2021.01.24 |