美文网首页
getter和setter 到底是个啥玩意

getter和setter 到底是个啥玩意

作者: 阿龙哟 | 来源:发表于2018-10-25 21:46 被阅读0次

    js中一共有两种属性,一种数据属性,一种访问器属性

    访问器属性不包函数值;包含一对getter和setter函数(非必须)

    读取访问器属性时会调用getter函数,返回有效值;在写入访问器属性时,会调用setter函数并传入新值,这个函数负责决定如何处理数据

    访问器属性不能直接定义,必须使用Object.defineProperty()来定义

    用 Object.defineProperty() 添加的属性值是不可修改的。

    //Object.defineProperty(obj, prop, descriptor)
    //obj 要在其上定义属性的对象。
    //prop 要定义或修改的属性的名称。
    // descriptor 将被定义或修改的属性描述符。

    var book = {
        _year : 2004,
        edition : 1
    }
    Object.defineProperty(book,"year",{
        get: function(){
            return this._year;
        },
        set: function(newValue){
            if(newValue > 2004){
                this._year = newValue
                this.edition += newValue-2004 
            }
        }
    })
    
    book.year = 2005 
    alert(book.edition)//2
    

    上述代码创建了一个book对象,两个默认属性是_year和edition

    定义了一个访问器属性year 包含getter 和setter两个函数

    getter函数返回_year的值,setter函数通过计算来确定正确的版本

    当修改访问器属性时触发setter函数,导致_year变成了2005,而edition变成了2

    似乎看到了双向绑定的影子,嘿嘿嘿!!

    相关文章

      网友评论

          本文标题:getter和setter 到底是个啥玩意

          本文链接:https://www.haomeiwen.com/subject/dzxhtqtx.html