Object.defineProperty方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性,并返回这个对象。
Object.defineProperty(
obj, // 定义属性的对象
prop, // 要定义或修改的属性的名称
descriptor, // 将被定义或修改属性的描述符【核心】
descriptor的值具体是:
{
value, // 属性的值
enumerable:true, // 控制属性是否可以枚举,默认值是false
writable:true, // 控制属性是否可以被修改,默认值是false
configurable:true, // 控制属性是否可以被删除,默认值是false
// 当读取属性时,get函数(getter)就会被调用,且返回值就是设置的值
get(){
console.log('有人读取了属性')
return number
}
// 当修改该属性时,set函数(setter)就会被调用,且会收到修改的具体值
set(value){
console.log('有人修改了age属性,值是:'+value)
number=value
}
}
- observe的功能就是用来监测数据的变化。实现方式是给非VNode的对象类型数据添加一个Observer,如果已经添加过则直接返回,否则在满足一定条件下去实例化一个Observer对象实例。
Observer是一个类,它的作用是给对象属性添加getter和setter,用于 依赖收集 和