프로퍼티 어트리뷰트, property attribute

임재환·2021년 4월 2일
0

JavaScript

목록 보기
9/15


프로퍼티 어트리뷰트, property attribute

객체의 프로퍼티는 프로퍼티 어트리뷰트를 갖는데,
이 프로퍼티 어트리뷰트 값은 내부 슬롯이다.


프로퍼티 어트리뷰트의 종류

프로퍼티는 데이터 프로퍼티와 접근자 프로퍼티로 나누어지며,
프로퍼티에 따라 갖는 프로퍼티 어트리뷰트가 달라진다.

일반적인 키와 값으로 구성된 프로퍼티는 데이터 프로퍼티이며,
접근자 프로퍼티는 자체적으로 값을 갖지 않고 다른 데이터 프로퍼티의 값을 읽거나 저장할 때 호출되는 접근자 함수로 구성된 프로퍼티이다.

데이터 프로퍼티의 프로퍼티 어트리뷰트

[[Value]]
프로퍼티 키를 통해 접근 시 반환되는 값

[[Writable]]
프로퍼티 값의 변경 가능 여부를 나타내는 불리언 값

[[Enumerable]]
프로퍼티의 열거 가능 여부를 나타내는 불리언 값
false일 경우 해당 프로퍼티는 for in 문이나 object.keys 메서드 등으로 나열할 수 없다.

[[Configurable]]
프로퍼티의 재정의 가능 여부를 나타내는 불리언 값
false일 경우 해당 프로퍼티의 삭제, 프로퍼티 어트리뷰트 값의 변경이 금지된다.

접근자 프로퍼티의 프로퍼티 어트리뷰트

[[Get]]
접근자 프로퍼티를 통해 값을 가져올 때 호출되는 접근자 함수
접근자 프로퍼티 키로 프로퍼티 값에 접근하면 이 함수가 호출되고, 결과값이 반환된다.

[[Set]]
접근자 프로퍼티를 통해 값을 저장할 때 호출되는 접근자 함수
접근자 프로퍼티 키로 프로퍼티 값을 저장하면 이 함수가 호출되고, 결과가 저장된다.

[[Enumerable]]

[[Configurable]]


프로퍼티 어트리뷰트에 간접적으로 접근하기

프로퍼티 어트리뷰트의 확인

객체의 프로퍼티 어트리뷰트는
Object.getOwnPropertyDescriptor() 메서드와 Object.getOwnPropertyDescriptors() 메서드로
간접적으로 확인할 수 있다.

이 메서드들는 프로퍼티 어트리뷰트의 정보가 들어있는 프로퍼티 디스크립터 객체를 반환한다.

프로퍼티 어트리뷰트 정의, 수정

Object.defineProperty() 메서드를 사용해 프로퍼티 어트리뷰트를 정의하거나 수정할 수 있다.


객체의 변경 방지

자바스크립트는 객체의 변경을 방지하는 다양한 메서드를 제공한다.
각 메서드들은 객체의 변경을 금지하는 강도가 다르다.

객체 확장 금지, Object.preventExtentions()

프로퍼티 추가: X
프로퍼티 삭제: O
프로퍼티 값 읽기: O
프로퍼티 값 쓰기: O
프로퍼티 어트리뷰트 재정의: O

객체 밀봉, Object.seal()

프로퍼티 추가: X
프로퍼티 삭제: X
프로퍼티 값 읽기: O
프로퍼티 값 쓰기: O
프로퍼티 어트리뷰트 재정의: X

객체 동결, Object.freeze()

프로퍼티 추가: X
프로퍼티 삭제: X
프로퍼티 값 읽기: O
프로퍼티 값 쓰기: X
프로퍼티 어트리뷰트 재정의: X


profile
What do I do?

0개의 댓글