vue关于为什么把data定义为一个函数的问题

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 中传递过来的。不需要我们手动传递