美文网首页
Object.defineProperty()

Object.defineProperty()

作者: 怎么昵称 | 来源:发表于2021-02-07 09:12 被阅读0次

    getter 是读取对象属性时调用的函数
    setter 是写入对象属性时调用的函数

    
    var person = {
        _age: 16,
        kind: 'young'
    }
    
    // Object.defineProperty(obj, prop, descriptor)
    // obj 要在其上定义属性的对象。
    // prop 要定义或修改的属性的名称。
    // descriptor 将被定义或修改的属性描述符。
    Object.defineProperty(person, "age", {
        //getter函数
        get() {                     //ES6语法 get() 等价于 get: function()
            return this._age;
        },
        //setter函数
        set(newValue) {
            if (newValue < 18) {
                this.kind = 'young'
            } else {
                this.kind = 'adult'
            }
            this._age = newValue
        }
    })
    //读取对象的属性值时,调用get()方法,返回 person._age 的值
    console.log(person.kind)      //输出:young
    console.log(person.age)      //输出:16
    //为对象的属性写入值时,调用set()方法,执行判断程序,<18修改kind为young,>18修改kind为adult
    person.age = 24
    console.log(person.kind)   //输出:adult
    console.log(person.age)    //输出:24
    
    

    相关文章

      网友评论

          本文标题:Object.defineProperty()

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