Javascript用定义多个属性方法却赋不了值

var book={};
Object.defineProperties(book,{

_year:{
    value:2004
},
edition:{
    value:1
},
year:{
    get:function () {
        return this._year;
        // body...
    },
    set:function(newValue){
        if (newValue>2004) {
            this._year=newValue;
            this.edition+=newValue-2004;
        }
    }
}

});

   book.year=2005;
   console.log(book.year);![图片描述][1]
阅读 2.5k
2 个回答

通过Object.defineProperties定义对象属性,如果没有配置 writable: true 的话默认writable:false`_year:{

value:2004,
writable: true

},`
这样就可以配置_year属性可写入

通过defineProperty定义的对象属性默认是不可写的。要想能够改变属性值,需要添加writable: true

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题