vue源码中data必须要定义为一个函数是为了不产生数据污染,那么从源码上看,是通过判断
typeof data==='function' ? getData(data,vm) : data || {},
那么我的疑问是在getData这个函数中,return data.call(vm,vm),为什么还需要传一个vm实例进去呢,在组件定义data() {return {}}的时候,我也没有写形参呀
#JavaScript
你看前边源码: let data = vm.$options.data ;
传递vm , 你就可以在data 中使用this访问到实例方法。。
形参是从initData 中传递过来的。不需要我们手动传递