vue-cli 中的Data为什么要是方法?
为什么data要这么写啊?
为什么data要这么写啊?
2018-04-26
官网上有非常好的解释, 请点击这里, data必须是一个函数
// 直接声明的对象只占某一块内存空间,对它的所有引用共用该空间。
var data = {
id: 'abc',
count: 100
}
console.log('type:', typeof data)
var a = data
var b = data
console.log('a.id=', a.id)
a.id = '007'
console.log('a.id=', a.id)
console.log('b.id=', b.id)
// 方法每次返回的对象在内存中占用不同块空间,每个引用各自维护自己的空间。
function dfunc() {
return {
id: 'default_value',
count: 1
}
}
console.log('type:', typeof dfunc)
var a1 = dfunc()
var b1 = dfunc()
console.log('a1.id=', a1.id)
a1.id = '008'
console.log('a1.id=', a1.id)
console.log('b1.id=', b1.id)
猜测:
Vue 在获取data 这个组件的成员时会先判断其类型,如果是一个对象则直接引用,如果是一个函数则获取函数的返回值。
以上代码就是模拟Vue 获取data 对象的过程,当data 直接是一个对象时所有该组件的实例公用一份数据,当data 时函数时每个组件实例维护自己的数据。
举报