采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
想问一下
data:function(){
return {
f:1,
d:2
}
为什么这样写在使用同一个组件的时候用return就会只有一份呢?为什么写了函数就可以避免这个问题?是不是因为函数有作用域的关系?
这也不算典型的闭包,典型闭包应用是返回一个生成独立作用于的方法。
这里会产生的问题,是对象的引用赋值问题
比如 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是一个方法函数,也可以理解为闭包,没毛病
厉害了我的于老师!!!
刚刚查了一些资料,老师原谅我小白,是不是它也就是所说的闭包,通过函数去构成一个闭包让外部无法访问函数的内容?我觉得好像是这样,请老师指点迷津!!
data用function(){}就相当于给两个引用对象分配两片内存地址,有两个my-header引用myHeader组件 // 类比源代码: // var o1 = {name: 'chen'} // var o2 = o1; // var o3 = o1; // 当o2.name改变当时候,它会影响到o1和o3, // 但是当我们采用如下方式的时候: // var o1 = {name:function{}{return 'chen'}}; // var o2 = o1; // var o3 = o1; // 我们只能用o2.name()这种方式来获取值,会产生两个对象,所以他们相互不干扰,里面的值都有自己的作用域,相互不共用
登录后可查看更多问答,登录/注册
快速入门Vue2.0,组件化开发一个数字产品电商平台
1.9k 1
1.6k 1
1.4k 5
1.2k 14
2.4k 12