<script>
let a = "";
export default {
data() {
return {
b: ""
};
},
};
</script>
代码如上图所示.环境是 vue2.
因为一些性能和循环引用问题.想把某些变量放在 data 外面.但是这个组件本身在页面上是多实例的.
不知是实例内部独享还是多个实例共享呢?
个人理解:组件似乎在打包过程中变成闭包了?应该是每个实例各自隔离吧?
1
coyoteer 2023-05-19 09:23:38 +08:00
我试验了一下是共享的
|
2
wu67 2023-05-19 09:40:36 +08:00
闭包是值的跨作用域传递...
|
3
ChefIsAwesome 2023-05-19 09:58:02 +08:00
你那个 export 的玩意是工厂函数,拿来造组件实例的,不是实例本身啊。
|
4
daliusu 2023-05-19 13:41:30 +08:00
你这跟 vue 半毛钱关系没有把,你把一个对象放在 data 外边,data 是每次实例创建的时候调用一下 return 一个新的对象,但是这个对象内部一些属性引用的不还是你外边的对象吗?如果不想,你可以 deepclone 一下,或者把这个外部对象也改写成调用函数获取的形式,const getData = () => ({x:1})
|
5
xubingok OP 懂了!醍醐灌顶!感谢各位解惑!
|
6
xubingok OP 那如果不需要加入响应式,但又每个实例隔离的话,怎么写呢?
|