JavaScript 设置 get/set 两种方法有什么区别?

使用 Object.defineProperty 定义的 getter/setter 和在声明对象时的 get/set 有什么区别。

let obj = {
    $a: 20,
    get a() {
        return this.$a;
    },
    set a(val) {
        this.$a = val;
    }
};
let obj = {
    $a: 20
};
Object.defineProperty(obj, 'a', {
    get: function () {
        return this.$a;
    },
    set: function (v) {
        this.$a = v;
    }
});

个人使用下来似乎差别不大,在打印的时候第二种方法不会显示 a 属性而已。希望有大神解答一下。

阅读 520
评论 3月20日提问
    1 个回答

    没区别。

    Object.defineProperty 设置的 getter / setter,最后实际还是被挂到了 get / set 方法上。

    只不过 Object.defineProperty 是 ES5 才有的,而前者在 ES5 之前就已经在 Chrome 等浏览器上有了私有的实现。

    REF: https://developer.mozilla.org...
    评论 赞赏 3月20日
      撰写回答

      登录后参与交流、获取后续更新提醒