티스토리 뷰
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
let user = {};
Object.defineProperty (user, "age", {
get : function () {
return this._age;
},
set : function (age) {
if (age<0) {
console.log('0보다 작은값을 불가능합니다.');
} else {
this._age=age;
}
},
enumerable : true
});
user.age=10;
console.log(user.age);
user.age=-1;
console.log(user.age);
|
cs |
속성 기술자를 통해 user 객체의 age 속성을 정의했다. 이때 값에 접근하는 방식을 정의하는 객체를 전달하는데 이 객체를 접근 기술자라 하고, get 과 set을 메소드로 가진다. age 속성의 접근 기술자의 get 메소드는 속성에 접근할 때 호출된다. 그리고 set 메소드는 속성에 값을 대입할 때 호출된다.
8번라인에서 0보다 작은 값을 대입을 불가능하게 조건식을 설정했다. 그러므로 18라인에서 -1로 대입했을때는 콘솔에 에러가 출력이 된다.
참고 : 해당 예제에서 속성 이름에 _를 붙이는 이유는 비공개(private)속성임을 나타낸다 자바스크립트에서 객체의 속성 접근 제한자가 없어서 모든 속성은 공개(public)이다.
'Javascript' 카테고리의 다른 글
반복 가능한 규약(Iterable Protocol)과 반복자 규약(Iterator protocol) (0) | 2019.07.20 |
---|---|
모듈 이해하기 (0) | 2019.07.18 |
객체 속성 기술자 이해하기 (0) | 2019.07.17 |
스코프 체인 이해하기 (0) | 2019.07.17 |
함수 나머지 매개변수 이해하기 (0) | 2019.07.17 |
댓글