javascript - 关于Vue中的data绑定
怪我咯
怪我咯 2017-05-19 10:32:29
0
2
685

Vue的官方文档中说,Vue 实例的数据都保存在 data 对象中,Vue 将会递归将 data 的属性转换为 getter/setter,从而让 data 的属性能够响应数据变化。

var data = { a: 1 }
// 直接创建一个实例
var vm = new Vue({
  data: data
})
vm.a // -> 1
vm.$data === data // -> true

我现在的疑问是:

data() {
      return {
        favorite: (() => {
            return loadFromLocal(this.seller.id, 'favorite', false);
        })()
      };
    }

其中loadFromLocal是全局声明的一个函数,Vue实例将data中的属性转换为getter和setter,这个立即执行函数的返回值会因为其它函数变化而变化。在我没有显示地调用favorite的getter和setter时,Vue是如何监听数据变化的呢?是每隔一段时间检查一遍立即执行函数的返回值吗?

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(2)
phpcn_u1582

1.立即执行函数在new Vue之前,已经执行完了

var App = {
  data() {
    return {
      a: (()=>{ return 1; })()
    }
  }
}

new Vue({App});

2.监听就是通过getter 和setter进行的,没有什么在之前。
在模板中打印属性,在ready时访问属性,都相当于调用了getter

为情所困

雷雷

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板