Language | Basic/JavaScript

[JavaScript 스터디] Property Attribute

주정용 2021. 1. 29. 23:02
728x90
  • 프로퍼티의 상태를 나타내는 속성, 자바스크립트 엔진이 프로퍼티를 생성할 때 기본적으로 정의함
  • 값(value), 갱신 가능 여부(writable), 일치 가능 여부(enumerable), 재정의 가능 여부(configurable)

내부 슬롯, 내부 메서드

  • ECMA Script에서 정의된 의사 프로퍼티(Pseudo property), 의사 메서드(Pseudo method)
  • 자바스크립트 엔진의 내부로직 --> 개발자가 직접 접근 불가능
  • 일부 내부 슬롯/메서드에 한해서 간접 참조 제공
    • Ex) 모든 객체는 [[prototype]]을 내부 슬롯으로 가짐 --> __proto__를 통해서 참조 가능

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', 이웅모 저, 위키북스

http://www.kyobobook.co.kr/product/detailViewKor.laf?mallGb=KOR&ejkGb=KOR&linkClass=3314&barcode=9791158392239