Object.defineProperty()

2021-02-07  本文已影响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

上一篇下一篇

猜你喜欢

热点阅读