假设有如下代码:
this.$options.data
是demo组件的data函数
this._data
是demo组件的data函数执行结果
看源码src/core/instance/state可知
function initData (vm: Component) {
let data = vm.$options.data
data = vm._data = typeof data === 'function'
? getData(data, vm)
: data || {
}
}
function getData (data: Function, vm: Component): any {
try {
return data.call(vm, vm)
} catch (e) {
handleError(e, vm, `data()`)
return {
}
}
}
this.$data
实际上访问的是this._data
export function stateMixin (Vue: Class<Component>) {
// flow somehow has problems with directly declared definition object
// when using Object.defineProperty, so we have to procedurally build up
// the object here.
const dataDef = {
}
dataDef