ES6 里关于class的setter和getter

2020-03-19  本文已影响0人  infi_

废话不多说 直接上例子

let _age=4
class Animal{
    constructor(type){
        this.type=type
    }
    get age(){       //get 是关键字  ES6允许属性在constructor外 在类的顶层  出入口
        return _age
    }
    set age(val){   //setter相当于给属性赋值的拦截器 里面可以判断 只要实例上给age属性赋值就会触发  出入口
        if(val>8){
            _age=val
        }
    }
    eat(){
        console.log("im eat food")
    }
}

let dog=new Animal("dog")  
let monkey=new Animal("monkey")

dog.eat()
monkey.eat()


console.log(typeof Animal)
console.log(dog.age)  //4
dog.age=9  //设置age 触发set方法   
console.log(dog.age)  //调用时候按属性调用  9
上一篇下一篇

猜你喜欢

热点阅读