怎样理解 Vue 组件中 data 必须为函数 ?

时间:2023-03-09 18:32:59
怎样理解 Vue 组件中 data 必须为函数 ?

组件意在 复用 , 若为 对象, 则会相互干扰. 且 Vue 不允许此事发生, 规定必须为函数, 否则报错. 原理如下

对象

// 模拟创建组件
var Component= function() {} // 模拟使用对象作data
Component.prototype.data = { a: 1 } // 模拟使用组件
var component1 = new Component()
var component2 = new Component() // 发现 data 共用, 相互影响
component1.data.a = 2
component2.data.a //

函数

// 模拟创建组件
var Component= function() {}; // 模拟使用函数作data
Component.prototype.data = function() { return { a: 1 } }; // 模拟使用组件
var component1 = new Component()
var component2 = new Component() // 两者互不影响
component1.data.a = 2
component2.data.a //