通过前面的方法我们已经可以实现变化侦测的功能了,但是只做到了对数据对象中的某一个属性进行侦测,而我们希望对这个数据对象中的所有属性进行侦测,因此我们需要封装一个Observer类。
Observer
1 | var arrayKeys = Object.getOwnPropertyNames(arrayMethods) |
首先我们在构造Observer的时候会给我们要观测对象添加一个__ob__属性,这个属性指向这个Observer。通过检查对象上的这个属性我们可以知道这个对象是否已经被观测过,从而避免重复的观测。