#getter 通常在访问对象属性时,如果该属性是个方法,那得需要调用并执行该方法才能获得需要的数据。有时候希望访问属性时能返回一个动态计算后的值.所以此时getter就起到作用了。 首先先看一个例子: 在对象实例化的时候创建一个虚拟属性getName
let obj = {
get getName () {
return 'test'
},
name: function () {
return 'xxx'
}
name: functio
}
console.log(obj.getName);
console.log(obj.name());
注意,试图赋给latest新值的话不会改变该值.
#setter set 语法可以将一个函数绑定在当前对象的指定属性上,当那个属性被赋值时,你所绑定的函数就会被调用。在 javascript 中,如果试着改变一个属性的值,那么对应的 setter 将被执行。setter 经常和 getter 连用以创建一个伪属性。一个拥有真实值的属性就不能再有 setter 了。
let ex = 'foo';
let obj = {
str = "test"
set [ex] (v) {this.str = v}
}
console.log(obj.str) //test
obj.ex = 'change'
console.log(obj.str) // change
随时给对象创建getter setter属性
Object.defineProperty
Object.defineProperty(obj, '属性名',{get: fn})
defineGetter
obj.defineGetter('属性名',fn) ###删除getter delete obj.xxx