티스토리 뷰
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
let user = {
name : 'John'
};
let descriptor = Object.getOwnPropertyDescriptor(user, 'name');
console.log(descriptor);
let user2 = {};
Object.defineProperty(user2, 'name', {
value : 'John',
enumerable : true,
configurable : true,
writable : false
});
console.log(user2.name);
user2.name="Sarah";
console.log(user2.name);
|
cs |
자바스크립트의 모든 객체 속성은 자기 자신에 대한 정보를 담고 잇는 속성 기술자를 가지고 있다. 라인 5번처럼 getOwnPropertyDescriptor 메소드를 통해 속성 기술자 객체를 가지고 올수도 있다.
9번의 속성 기술자 객체 설명을 하자면
value: 값을 나타낸다
enumerable : for ....in 루프나 object.keys 메소드 같이 속성을 나열할 때 나열 가능 여부를 정의한다. false인경우 나열하지 않음
writable : 값을 변경 할수 있는지의 여부
configurable : 속성 기술자를 변경할 수 잇는 여부를 정의한다. false인 경우 속성 기술자를 다시 변경할수 없음.
16번의 경우 writable을 false를 주었기 때문에 17번 콘솔 출력에서 값이 변경이 되지 않은것을 확인할수 있다.
'Javascript' 카테고리의 다른 글
모듈 이해하기 (0) | 2019.07.18 |
---|---|
Get, Set을 통한 속성 접근 관리하기 (0) | 2019.07.17 |
스코프 체인 이해하기 (0) | 2019.07.17 |
함수 나머지 매개변수 이해하기 (0) | 2019.07.17 |
Argument(매개변수)에 대하여 (0) | 2019.07.17 |
댓글