js之getter和setter

316 阅读1分钟
  • 什么是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