当前位置: 首页>前端>正文

Vue 组件中data为什么必须是函数

在 new Vue() 中,data 是可以作为一个对象进行操作的,然而在 component 中,data 只能以函数的形式存在,不能直接将对象赋值给它,这并非是 Vue 自身如此设计,而是跟 JavaScript 特性相关,我们来回顾下 JavaScript 的原型链:

var Component = function() {};
Component.prototype.data = {
	message: “Love”
 };
 var component1 = new Component();
 component2 = new Component();
 component1.data.message = “Peace”;
 console.log(component2.data.message); // Peace

以上两个实例都引用同一个原型对象,当其中一个实例属性改变时,另一个实例属性也随之改变,只有当两个实例拥有自己的作用域时,才不会互相干扰。

var Component = function() {
	this.data = this.data();
};
Component.prototype.data = function(){
	return {
  	message: “Love”
  }
 };
 var component1 = new Component();
 component2 = new Component();
 component1.data.message = “Peace”;
 console.log(component2.data.message); // Love

从以上的例子我们总结一下:

就是为了防止数据被污染。组件中的data写成一个函数,数据以函数返回值的形式定义,这样每次复用组件的时候都会返回一个新的data, 相当于每个组件实例都有自己私有的数据空间,它们只负责各自维护的数据,不会造成混乱。


https://www.xamrdz.com/web/2qx1951483.html

相关文章: