Vue 组件 data 为什么要返回一个函数 ?

var a = {
    names: "张三",
};
function b() {
    return { names: "李四" };
}

var c = a;
var d = a;
console.log("one", c, d);
c.names = "123";
console.log("one", c, d);

var e = b();
var f = b();
console.log("two", e, f);
e.names = "456";
console.log("two", e, f);
结果:
one { names: '张三' } { names: '张三' } // 对象变量更改前
one { names: '123' } { names: '123' } // 对象变量更改后, 数据之间会相互影响
two { names: '李四' } { names: '李四' } // 对象函数更改前
two { names: '456' } { names: '李四' } // 对象函数更改后, 数据之间不相互影响

// Vue  data 为什么要返回一个函数 ?
// 解答:
// Vue 是组件其本质也是一个对象, 当组件被多次导入使用(引用) 时相当于对象的赋值操作, 对象赋值时都是赋值的引用而非新的对象,
// 当多个引用 操作组件内部的 data 时, 由于都是使用的同一个组件的引用, 所以内部的data也都是同一个, 不管哪个引用先加载, 后面的引用加载后一旦修改了data, 先前引用设置好的 data 数据, 就会被覆盖成新的数据
// 故儿需要使用 函数来返回 data , 由于函数也是对象的一种, 函数在运行时返回的 data 是一个新的对象, 所以多个引用之间的 data 不会相互影响
如有错误请指出, 谢谢 !
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值