Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用Object.defineProperties?_Javascript - Fatal编程技术网

Javascript 如何使用Object.defineProperties?

Javascript 如何使用Object.defineProperties?,javascript,Javascript,各位,我最近读了Professional.JavaScript.for.Web.Developers.3rd.Edition。这是我从中学到的代码。但是,输出与我读的书不同。当我运行下面的代码时,book.edition是1,book._year是2004年,book.year是2004年。怎么了?我的代码怎么了 var book = {}; Object.defineProperties(book, { _year: { value: 2004 }, edition: {

各位,我最近读了Professional.JavaScript.for.Web.Developers.3rd.Edition。这是我从中学到的代码。但是,输出与我读的书不同。当我运行下面的代码时,
book.edition是1
book._year
是2004年,
book.year
是2004年。怎么了?我的代码怎么了

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;
      }
    }
  }
});

book.year = 2005;
console.log(book.edition);
console.log(book._year);
console.log(book.year);

对象的属性
\u year
edition
应定义为可写。否则,在年份设定器中重新定义它们是无用的

var-book={};
对象。定义属性(书籍{
_年份:{
价值:2004年,
可写:对
},
版本:{
价值:1,
可写:对
},
年份:{
get:function(){
今年归还;
},
set:函数(newValue){
如果(新值>2004){
本年=新值;
本版+=新价值-2004年;
}
}
}
});
控制台日志(book.edition);
console.log(book.year);
账面年=2005年;
控制台日志(book.edition);

console.log(book.year)预期的行为是什么?我认为这是正确的输出
book.\u year
直接获取变量,而
book.year
是一个getter函数,返回
\u year
,因此它们都应该返回相同的值value@Jayce444他们应该返回2005年而不是2004年,并且
edition
应该是2。