js 语言基础问题求助

代码如下:
var person={};
Object.defineProperties(person,{
_year:{
value:2004
},

edition:{
    value:1
},

year:{
    get:function(){
        console.log('get',this._year,this.edition);
        return this._year;
    },

    set:function(newValue){
        if(newValue>2004){
            this._year = newValue;
            // console.error('========2');
            //console.log(this.edition);
            this.edition +=(newValue-2004);
            console.log('set',this.edition,newValue);
        }
    },
},

});

console.log(’=============================’);
person.year=2005;
console.log(‘person.year’,person.year);// 这里为什么输入 2004。
console.log(person.edition);

每个属性里面的value前面加上
writable: true,
表示属性是否可变

感谢。书本后面的文章有讲到数据属性。