1.Object.defineProperty是用来添加对象属性方法的
let person={
name:'laozhichi',
age:18
}
Object.defineProperty(person,'sex',{
value:'man'
})
console.log(person);
这个时候就输出
2.但是要注意这种方添加的属性键值是不能被枚举、修改属性值、删除的
例如上文在代码后方加上代码:
console.log(Object.keys(person));
输出结果:
但是我们为了让它能遍历,那么就是只要在属性的后方加上一个
enumerable:true
但是我们为了让它能改变属性值,那么就是只要在属性的后方加上一个
writable:true
但是我们为了让它能被删除,那么就是只要在属性的后方加上一个
configurable:false
3.Object.defineProperty()函数当中的数据代理
get(){
//这个表示当对象当中添加的那个属性的值被读取的时候,那么就调用这个函数,函数的返回值就是属性的值
}
set(value){
//这个函数表示属性值被改变时调用的函数,函数的返回值就是属性值
}
let person={
name:'laozhichi',
age:18
}
Object.defineProperty(person,'sex',{
value:'man',
enumerable:true,
configurable:false,
get(){
console.log('sex的值被改变了');
},
set(value){
console.log('值被改变了,且值是',value);
}
})