- 什么是getter: 获取对象某个属性的方法
- 什么是setter: 设定对象某个属性的方法,有一个参数,为新设定的值
话虽如此,但实际应用,我就vue中见到例如计算属性,vuex;mdn展示的案例,使用defineProperty通过对date类的原型添加自定义属性。
我们在使用的时候直接使用get,set关键字定义, 下列展示使用对象初始化器定义的getter和setter
var obj = {
name:'zs',
get name(){
return this.name
},
set name(val){
return this.name = val //改变原有的值
}
}
还可以使用Object.defineProperties()对已经创建的对象添加getter和setter
该方法的
- 参数1:为要添加的对象
- 参数2:是一个对象,这个对象的属性名对应你想设置的getter或setter的方法名,这个对象的属性值便是getter,setter方法
var obj2 = {age:18}
Object.defineProperties(obj2,{
getage:{get(){return this.age +1}},
setage:{set(val){this.age = val}},
})
console.log('obj2',obj2)
console.log('obj2',obj2.getage) // 19
console.log('obj2',obj2.setage = 35) // 35