m0_57965808 2022-04-01 13:40 采纳率: 91.2%
浏览 42
已结题

JS代码的Object.defineProperty()方法不太懂

今天看到一篇文章,其中有关于Object.defineProperty()方法的代码,如下:

var people = {
  name: 'Bob',
};
var count = 18;

// 定义一个 age 获取值时返回定义好的变量 count
Object.defineProperty(people, 'age', {
  get: function () {
    console.log('获取值!');
    return count;
  },
  set: function (val) {
    console.log('设置值!');
    count = val + 1;
  },
});

console.log(people.age);
people.age = 20;
console.log(people.age);

输出:

获取值!
18
设置值!
获取值!
21

我从输出中的“设置值”开始就不明白是怎么输出的了。希望各位能解释一下。

  • 写回答

1条回答 默认 最新

  • iloveozz 2022-04-01 14:04
    关注

    people.age = 20;
    就是给people设置值,会调用set函数,
    就会调用 console.log('设置值!');
    打印出设置值,
    val参数的值就是20,
    count就等于21 啊,
    获取值会调用get函数,4
    返回count的值,就是输出21,这有啥不明白的呢

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 4月9日
  • 已采纳回答 4月1日
  • 创建了问题 4月1日