为什么vue中data是函数而不是一个简单对象?
为什么不是对象?
- vue 中每一个 .vue文件都是一个组件,vue抽离成一个个单独的组件就是为了实现复用,那么问题来了,如果组件实现了复用,组件中的data数据 自然就会被复用,但我们复用组件目的可不是为了在不同页面展示相同的数据。而且假设data是Object引用数据类型,每个组件的data对象都是指向内存的同一个地址,复用组件时,一处改变了就会连累其他复用组件改变,这当然也不是我们想要的结果,所以,每个data不能指向同一个地址,下面用原型链来解释这段话。
MyComponent.prototype.data = {
a: 1,
b: 2,}
const component1 = new MyComponent();
const component2 = new MyComponent();
component1.data.a === component2.data.a; // true;证明两个实例对象都是指向同一个地址
component1.data.b = 5; //通过实例1修改,导致实例2访问到的data对象中的b发生改变,vue组件就是一个个vue实例,为了让每一个复用的vue组件都独立的展示自己的data,就注定data不能一个对象的形式存在。
component2.data.b // 5
为什么是函数?
- data为函数,通过return 返回对象的拷贝,从而开辟一个新的空间地址,致使每个实例都有自己独立的对象,数据改变时也只是在自己的作用域改变,而实例之间是不会相互影响的。
后续跟进中····
421

被折叠的 条评论
为什么被折叠?



