一.Object.defineProperty的语法
Object.defineProperty(obj,prop,descriptor)
obj:需要定义属性的对象
prop:需要定义的属性
descriptor:属性的描述符
返回值:返回此对象
var obj = {};
var descriptor = {
configurable:false,
writable:false,
enumerable:false,
value:'hello'
get(){},
set(){}
};
Object.defineProperty(obj,'1',descriptor)
console.log(obj['1']);
应用:数据响应式
function defineReactive(obj,key,val){
Object.defineProperty(obj,key,{
get(){
return val
},
set(newVal){
if(newVal !== val){
val = newVal
}
}
})
}
const obj = {}
defineReactive(obj,'foo','123');
obj.foo
obj.foo = '456'
console.log(obj)