使用 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 属性而已。希望有大神解答一下。
没区别。
Object.defineProperty
设置的getter
/setter
,最后实际还是被挂到了get
/set
方法上。只不过
Object.defineProperty
是 ES5 才有的,而前者在 ES5 之前就已经在 Chrome 等浏览器上有了私有的实现。