问题:将 globalData 里的对象类型赋值给局部变量,局部变量发生改变之后,会影响 globalData 的数据,这算 bug 吗,还是我写的代码有问题,求解?
App.vue
<script>
export default {
globalData: {
"text": "text",
"arr": [{
"name": "test",
}]
}
}
</script>
<style>
/*每个页面公共css */
</style>
index.vue
<script>
export default {
data() {
return {
title: 'Hello'
}
},
onLoad() {
// // 1. 修改普通类型
// let text =getApp().globalData.text
// console.log("getApp.globalData.text:", getApp().globalData.text)
// console.log("text:", text)
// // 修改 text 再输出,符合预期
// text="update text"
// console.log("getApp.globalData.text:", getApp().globalData.text)
// console.log("text:", text)
// 2. 修改数组类型
let arr =getApp().globalData.arr
// TODO 问题1 :getApp.globalData.arr 的 name 是 text,为什么输出的结果三 update text(代码在后面才作的修改)
console.log("getApp.globalData.arr:", getApp().globalData.arr)
console.log(" arr:", arr)
// 修改 arr 再输出,输出的结果就很奇怪了
arr[0].name="update text"
// 问题2:我修改是变量 arr ,为什么会影响 getApp.globalData.arr
console.log("after update getApp.globalData.arr:", getApp().globalData.arr)
console.log("after arr:", arr)
}
}
</script>
执行结果:
五岁小孩 (作者)
感谢
2024-03-27 14:32