object.defineproprety

31 阅读1分钟

Object.defineProperty() 可以直接在一个对象上定义一个新属性,或者修改一个对象的现有属性,并返回此对象

声明一个对象

    let person = {
        name: '小明',
        sex: '男',
        // age: 18
    }

首先 使用`Object.defineProperty()这个方法给person对象添加age属性

Object.defineProperty()接收3个参数

1.给谁添加属性 2.添加的属性名 3.其他配置项

这个时候控制台打印perosn 发现age属性已经添加上去了

此时可以用for遍历一下这个对象

        console.log('@', person[key]) //@小明 @男 
    }

发现只打印了源数据 并没有打印出添加的age属性,于是得出结论 age属性不可被枚举(遍历)

如果想要让这个属性可遍历 此时可以添加一个配置项:enumerable: true

如果想删除age属性的话: delete person.age

如果返回false 说明删除失败 这个时候再添加一个配置项 让age属性可以被删除:configurable: true

Object.defineProperty()方法有两个函数 一个是get 另一个是set 当修改age属性时 set函数会被调用 此时set会接收到一个参数value 这个参数表示修改后的值