반응형
자바스크립트 엔진은 프로퍼티를 생성할 때 프로퍼티의 상태를 나타내는 프로퍼티 어트리뷰트를 기본값으로 정의하게 된다. 프로퍼티의 상태에는 아래 네가지가 존재한다
value | 프로퍼티 값 |
writable | 값 갱신 가능여부 |
enumeratable | 열거 가능여부 |
configurable | 재정의 가능여부 |
이는 자바스크립트 엔진에서 관리하는 내부슬롯 [[value]], [[writable]], [[enumerable]], [[configurable]]값들이다. 이 어트리뷰터에 직접적인 접근은 안되지만 Object.getOwnPropertyDescriptor메소드를 사용해서 간접적으로 확인할 수 있다.
Object.getOwnPropertyDescriptor 메소드의 첫번째 매개변수에는 객체가, 두번째 매개변수는 프로퍼티의 key값을 문자열로 전달해 준다. 만약 존재하지 않는 객체라면 undefined를 반환하게 된다. ES8부터는 Object.getPropertyDescriptors는 객체 내 모든 프로퍼티 어트리뷰트 정보를 제공하는 객체를 반환한다.
const Person = {
name : "Lee",
age : 20
};
//ES6
console.log(Object.getOwnPropertyDescriptor(Person,'name'));
//ES8
console.log(Object.getOwnPropertyDescriptors(Person));
/**
*
* { value: 'Lee', writable: true, enumerable: true, configurable: true }
{
name: {
value: 'Lee',
writable: true,
enumerable: true,
configurable: true
},
age: { value: 20, writable: true, enumerable: true, configurable: true }
}
*/
반응형
'Language > JavaScript' 카테고리의 다른 글
[javascript]객체 변경방지 (0) | 2021.12.14 |
---|---|
[javascript] var VS let (0) | 2021.12.14 |
[javascript]함수레벨 스코프 (0) | 2021.12.14 |