정의. 속성을 정의하려면 다음과 같은 해당 기능을 사용해야 합니다.
Object.defineProperty(obj, "prop", propDesc)
obj에 자체 속성 prop이 없는 경우 이 함수의 기능은 자체 속성 prop을 obj에 추가하고 값
을 할당하는 것입니다.
propDesc 매개변수는 속성의 특성(쓰기 가능성, 열거 가능성 등)을 지정합니다.
obj에 이미 자체 속성 prop이 있는 경우 이 함수의 기능은 해당 속성 값을 포함하여 기존 속성의 특성을 수정하는 것입니다.
1. 속성 정의
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; } } }); book.year = 2005; alert(book.edition); //2
2. __defineSetter__ 및 __defineGetter__
var book = { _year: 2004, edition: 1 }; //legacy accessor support book.__defineGetter__("year", function(){ return this._year; }); book.__defineSetter__("year", function(newValue){ if (newValue > 2004) { this._year = newValue; this.edition += newValue - 2004; } }); book.year = 2005; alert(book.edition); //2