关于JavaScript中的getter和setter

    选择打赏方式

在没有ES6 之前如果私有化一个类的属性是的确不易的。不能说ES5完全做不到但是确实是十分费力气的一件事

但是现在在ES6中有getter以及setter将使私有化变得十分容易

大家先看一下例子

let _age = 10;
class Animal{
    constructor(type) {
        this.type = type
    }
    get age () {
        return _age;
    }
    set age (value) {
        if (value < 12 && value > 10) {
            _age = value
         }
    }
    age () {
        console.log(`${type}在吃饭`)
    }
}
let dog = new Animal('小狗')
console.log(dog) // 这个时候一定只会输出一个属性那就是type
// 我们来看一下age 
console.log(dog.age) // 这个时候是10
// 我们尝试修改它一下
dog.age = 100
console.log(dog.age )
// 结果我们发现age 并没有改变,这是为什么呢?
通过上面的例子。我们可以看出age的value并没有变为100
因为我们set age的时候加了一个判断条件 这个值必须为11的时候才可以被改变
换句话说这个者其实并不是dog实例中的age。而dog实例中的age 相当于一个入口。而真正意义上的值在_age上面。
还有一个问题为什么我不将age中的值写在this里面呢?
因为语法特性目前还不支持私有。只能以闭包的形式写在上面    
版权声明:若无特殊注明,本文皆为《 张宇童 》原创,转载请保留文章出处。
本文链接:关于JavaScript中的getter和setter https://www.zyt8.cn/h/196.html
正文到此结束

热门推荐

发表吐槽

你肿么看?

你还可以输入 250 / 250 个字

嘻嘻 大笑 可怜 吃惊 害羞 调皮 鄙视 示爱 大哭 开心 偷笑 嘘 奸笑 委屈 抱抱 愤怒 思考 日了狗 胜利 不高兴 阴险 乖 酷 滑稽

评论信息框

吃奶的力气提交吐槽中...


既然没有吐槽,那就赶紧抢沙发吧!