vue怎么实现的双向绑定?刚入坑的恐怕都能立马说出defineProperty这个东西,这是好事情,但如果对Object.defineProperty不熟的希望点右边链接再来看这篇文章。记得回来哦
话不多说直接上图 调用栈 stateMixin(vue)将_initState挂到vue的原型链上,当new Vue的_init会进行状态初始化。
_proxy 给vm实例添加get set方法可直接修改查找 vm实例上 example: vm.name 直接操作的是vm._data.name
上面的判断是告诉你只有当前这个组件没有props的时候 说白了他不是一个template模版组件就会干这件事
2.重头戏来了 observe 这才是老大哥。就在上图的最底下 虽然作者轻描淡写了observe data ==
3.observe 中一进来就判断了当前需要监听的是否是对象,不是就无需监听了,如果是那么判断对象上是否有__ob__属性,如果有直接返回__ob__的值(监听的对象上observe对象,可见4),防止一个对象多次重复监听。