Object.defineProperty(obj, prop, descriptor)
descriptor配置对象中的所有参数
| 参数 | 默认值 | 作用 | 配置属性 | 存取数据 |
|---|---|---|---|---|
| configurable | false | 为true时,以后才能修改属性(prop)的配置 | ✔ | ✔ |
| enumerable | false | 为true时,才可以枚举 | ✔ | ✔ |
| writable | false | 为true时,才可以修改属性的值 | ✔ | ✗ |
| value | undefined | 任何有效值(字符串、函数等) | ✔ | ✗ |
| get | undefined | 是一个函数,如果读取该属性触发,会有返回值 | ✗ | ✗ |
| set | undefined | 是一个函数,如果设置该属性触发 | ✗ | ✗ |
/**
* @Auther: kjprime
* @Date: 2022/8/2
* @Description: Object.defineProperty例子
* @version: 1.0.0
*/
const obj1 = {"name": "kjprime"}
// 配置属性
Object.defineProperty(obj1, "name", {
configurable: true,
enumerable: true,
writable: false,
value: "KjPrime"
})
console.log("obj1.name:", obj1.name)
const obj2 = {"name": "kjprime"}
// 存取数据
Object.defineProperty(obj2, "name", {
configurable: true,
enumerable: true,
get(){
console.log("我在访问obj2.name的数据,我给他返回我自定义的值")
return "obj2自定义的值"
},
set(value){
console.log("我在修改obj2.name的数据,把它修改成:", value)
}
})
console.log(obj2.name)
obj2.name = "KjPrime"
console.log(obj2.name)