//页面.js
const app = getApp()
Page({
data: {
album:[1,2,3,4]
},
onLoad: function () {
app.globalData.playList=this.data.album
},
h(){
//更换顺序
var arr1 = app.globalData.playList[0]
app.globalData.playList.splice(0, 1)
var arr2 = app.globalData.playList.concat(arr1)
app.globalData.playList=arr2
console.log('globalData.playList:'+app.globalData.playList)
console.log('album:'+this.data.album)
}
})
//页面.wxml
<button bindtap="h">h</button>
//app.js
App({
globalData: {
playList:[],
},
})
网友回复
圣殿骑士:
有个堆内存和栈内存的概念,这里要用深拷贝
app.globalData.playList.splice(0, 1)
你的这个修改,导致对应的this.data.album指针改变,指向同一份数据的另一个指针
可以利用 ES6 中的扩展运算符来复制数组,比如
let a = this.data.album;
app.globalData.playList= [...a];
undefined:
app.globalData.playList = JSON.parse(JSON.stringify(this.data.album))
改成这样,就不会丢失了。数组、对象类型为地址引用,A赋值给B,B修改了,A也会被修改。百度一下js的值引用和地址引用吧