JS | 프로퍼티

Jelloruby·2021년 5월 31일
0

Javascript

목록 보기
7/7
post-thumbnail

ECMAScript® 2015 Language Specification 에 있는 프로퍼티에 대한 내용을 읽고 정리해보았다.

내부 슬롯과 내부 메서드

ECMAScript는 자바스크립트 엔진에서 구현된 알고리즘을 설명하기 위해 내부 슬롯(Internal Slot)과 내부 메서드(Internal Method)를 사용한다.

  1. 일종의 의사 프로퍼티와 의사 메서드로서 구현된 알고리즘을 설명한다.

    They are defined by this specification purely for expository purposes.
    내부 슬롯과 내부 메서드는 순수하게 설명을 목적으로 정의된다.

  1. [[Prototype]], [[Construct]] 같이 대괄호를 2번 씌워 표현한다.

    Internal methods and internal slots are identified within this specification using names enclosed in double square brackets [[ ]].
    내부 메서드와 내부 슬롯은 2개의 대괄호를 사용하여 식별된다.

  1. 직접적으로 접근을 할 수 없지만 일부 내부 슬롯과 내부 메서드에 한해서 접근할 수 있는 방법이 제공된다. 예를 들어 [[Prototype]] 내부 슬롯은 __proto__ 를 통해 간접적으로 접근이 가능하다.

    The ECMAScript language provides no direct way to associate internal slots with an object.
    ECMAScript 언어는 내부슬롯을 객체와 연결하는 직접적인 방법을 제공하지 않는다.



프로퍼티 어트리뷰트와 프로퍼티 디스크립터 객체

Attributes are used in this specification to define and explain the state of Object properties.
프로퍼티 어트리뷰트란 객체 프로퍼티의 상태를 정의하고 설명하기 위해 사용된다.

위의 코드처럼 생성된 객체의 프로퍼티의 상태를 구성하고 나타내는 정보를 프로퍼티 어트리뷰트 라고 한다. 접근 메서드 Object.getOwnPropertyDescriptor 를 사용하여 내부 슬롯 [[Value]], [[Writable]], [[Enumerable]], [[Configurable]]에 접근할 수 있게 되며, 접근 메서드는 프로퍼티 어트리뷰트 정보를 제공하는 프로퍼티 디스크립터 객체를 반환한다.



데이터 프로퍼티와 접근자 프로퍼티

프로퍼티는 데이터 프로퍼티와 접근자 프로퍼티로 구분된다.

데이터 프로퍼티

키와 값으로 구성된 일반적인 프로퍼티를 말한다.

접근자 프로퍼티

다른 프로퍼티의 값을 읽거나 저장할 때 호출되는 접근자 함수로 구성되어 있다. 위에서 예로 들었던 [[Prototype]] 내부 슬롯의 경우에 __proto__ 를 통해 접근이 가능하다고 하였다. 프로토타입에 접근하게 되면 getter 함수인 [[Get]]이 호출되어 프로토타입을 취득할 수 있게 되며, setter 함수인 [[Set]]이 호출되면 프로토타입을 어떠한 값으로 저장할 수 있게 된다.




📚 참고

0개의 댓글

관련 채용 정보