认识Vue Object.defineProperty

14 min read

数据描述

当修改或定义对象的某个属性的时候,给这个属性添加一些特性:

var obj = {
    test:"hello"
}
//对象已有的属性添加特性描述
Object.defineProperty(obj,"test",{
    configurable:true | false,
    enumerable:true | false,
    value:任意类型的值,
    writable:true | false
});
//对象新添加的属性的特性描述
Object.defineProperty(obj,"newKey",{
    configurable:true | false,
    enumerable:true | false,
    value:任意类型的值,
    writable:true | false
});

属性说明

value 属性对应的值,可以使任意类型的值,默认为undefined

writable 属性的值是否可以被重写。设置为true可以被重写;设置为false,不能被重写。默认为false。

enumerable 此属性是否可以被枚举(使用for...in或Object.keys())。设置为true可以被枚举;设置为false,不能被枚举。默认为false。

configurable 目标属性是否可以使用delete删除,目标属性是否可以再次设置特性

getter/setter 当设置或获取对象的某个属性的值的时候,可以提供getter/setter方法。如果不设置方法,则get和set的默认值为undefined