2022-04-27

1.定义:该方法是在对象上定义一个新属性,或者修改一个对象的现有属性,并返回此对象。监听对象下的某一个属性,做数据劫持处理。

2.语法:Object.defineProperty(obj, prop, descriptor)

(1) 参一:要定义属性的对象。

(2) 参二:要定义或修改的属性的名称或 Symbol (被监听的属性)。

(3) 参三:要定义或修改的属性描述符(存取描述符:options{getter,setter})。

(4) 返回值:被传递给函数的对象。

let params = {

    _name:'zhangsan'

}

Object.defineProperty(params,'name',{

    get(){

        console.log(5456);

        return '用户名:'+this._name

    },

    set(val){

        this._name = val

    }

})

params.name = 'lisi'

document.write(params.name);// 用户名:lisi

let obj = {

    _name:'zhangsan',

    _age:30

}

Object.defineProperties(obj,{

    name:{

        // configurable是否可以被delete删除,默认为true

        configurable:false,

        // writable是否可以被修改,默认为true,不可以和set同时存在

        writable:false,

        // enumerable是否可以被for in 循环,默认为true

        enumerable:false

    },

    age:{

        // configurable:false,

        // writable:false,

        // enumerable:false

        get(){

            return 'age:'+this._age

        },

        set(val){

            this._age = val

        }

    }

})

你可能感兴趣的:(2022-04-27)