Object.defineProperty()方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性,并返回此对象。我们来看看例子。
const obj = {
name : "name",
age : 18
}
Object.defineProperty(obj,"name",{
value : "郑爽"
})
console.log(obj)
可以看到obj里面的name变成了新的值
Object.defineProperty(obj,"name",{
configurable : false,//改属性是否能被属性描述符修改
unumeable : false,//是否可以枚举
//value : "这里不改变就可以不用写"
writable : false//是否可以重新赋值
})
值得注意的是,configurable,unumeable,writable这三个属性都要写,如果不写的话,defineProperty的修改就不会报错了。
Object.defineProperty(obj, "name", {
value: "baby"
});
这个时候我们在改value值,浏览器就会报错了。
这就达到了我们不能修改value值的效果了。