var book = {}; Object.defineProperties(book, { _year : { writable : true, value : 2004 }, edition : { writable : true, value : 1 }, year : { get : function(){ return this._year; }, set : function(newValue){ if (newValue > 2004) { this._year = newValue; this.edition += newValue - 2004; } } } }); book.year = 2006; alert(book.edition);