먼저 아래와 같은 소스코드 Object.defineProperty()로
book 객체의 _year 접근자 프로퍼티를 고치면 edition 데이터 프로퍼티까지 바뀌는 것을 확인했습니다.
var book = {
_year:2004,
edition:1
};
Object.defineProperty(book, "year", {
get:function(){
return this._year;
},
set:function(newValue){
if(newValue>2004){
this._year=newValue;
this.edition+=newValue-2004;
}
}
});
alert(book.year.toString() + ", " + book.edition.toString());
book.year=2005;
alert(book.year.toString() + ", " + book.edition.toString());
그 다음 예제로 나온 것이 Object.defineProperties()입니다만, 전혀 동작하질 않습니다.
에러가 나는것도 아니고 책에 있는 그대로며, 책에서는 위 소스코드와 동일하게 작동한다고 나와있는데도 말입니다.
var book = {};
Object.defineProperties(book, {
_year:{
value:2004
},
edition:{
value:1
},
year:{
get:function(){
return this._year;
},
set:function(newValue){
if(newValue>2004){
this._year=newValue;
this.edition+=newValue-2004;
}
}
}
});
alert(book.year.toString() + ", " + book.edition.toString());
book.year = 2005;
alert(book.year.toString() + ", " + book.edition.toString());
문제가 뭘까요? ㅠㅠ
혹시 아시는 분 계시다면 알려주시면 감사하겠습니다.