9-17 程宗武

9-17(ES5)

定义访问器属性

        var student = {
            name: "朱朝阳",
            age: 18,
        }
               Object.defineProperty(student,"age",{

                    get:function(){
                        return this._age // this.age
                    },
                    set:function(value){
                        if(value >= 18 && value <= 60){
                            this._age = value
                        }else {
                            console.log("输入数据有误,无法修改")
                        }
                    }
               })
               student.age = 50
               console.log(student.age)

关于访问器属性的get方法存在一定的疑问,如果使用的是假的_age属性,直接调用对象的age属性的话返回的是一个未被定义的值--> undefined 因此我们只需要保护的是原有对象的age属性不被修改为非法的值,而原有的值是不是直接返回就可以了。

评论