关于data引用赋值问题
来源:2-3 Vue的组件

wykun
2017-04-23
想问一下
data:function(){
return {
f:1,
d:2
}
}
为什么这样写在使用同一个组件的时候用return就会只有一份呢?为什么写了函数就可以避免这个问题?是不是因为函数有作用域的关系?
写回答
2回答
-
这也不算典型的闭包,典型闭包应用是返回一个生成独立作用于的方法。
这里会产生的问题,是对象的引用赋值问题
比如 var x = { a: 1, b: 2}; var y = x;
当 去修改x里面的属性时,y的属性也会跟着变,因为 y=x是一个引用赋值
x.a = 5 // 这时候y.a 也变成了5
用方法就相当于
var x = function () { return {a: 1, b: 2} }
var y = x()
var z = x()
这样y,z 都是独立的一份对象,相互之间不受引用赋值影响,x是一个方法函数,也可以理解为闭包,没毛病
112017-04-24 -
wykun
提问者
2017-04-23
刚刚查了一些资料,老师原谅我小白,是不是它也就是所说的闭包,通过函数去构成一个闭包让外部无法访问函数的内容?我觉得好像是这样,请老师指点迷津!!
112017-07-14
相似问题