Page 自定义属性无法清空
发布于 5 年前 作者 guiying88 11733 次浏览 来自 问答
  • 当前 Bug 的表现(可附上截图)

    在data属性的同级目录定义一个一样的属性myProperty,然后在里面使用对象初始化,发现即便在unload里将该属性中的内容清空,第二次加载还是会出现清空前的内容(下图中标志位置,应该是初始值,不应该是修改置)

  • 预期表现

页面已经销毁后,第二次加载,不应该保留上次的内容

  • 复现路径

1 点击代码片段的跳转按钮,跳转到index2页面

2 点击返回按钮

3 点击代码片段的跳转按钮,跳转到index2页面

4 问题出现

  • 提供一个最简复现 Demo

https://developers.weixin.qq.com/s/TCahlsmD7n4i

3 回复

问题已经大致想明白了把代码分解一下

var p = {

xxxx

myProperty:{

    info:myObj

}

data:{

 xxxx

}

}

Page§

其实p就是一个全局变量,p参数传给Page后,Page会复制一份(浅复制),所以如果第一次修改myObj里面的值后,p也跟着改了,第二次再初始化相当于用了修改后的p作为参数(就是对象一样,只是对象里面引用的对象里的值改变了)

当然还有个推断结果,发现data应该是深度复制的,因为上面的info如果放到data里是没问题的

Page() 只在register时候初始化你的 myProperty 就一次,你就当做单例模式来看吧

跟前两天霄霄大神教育我的差不多

var a = {value:1}

console.log(a)

a.value=2

回到顶部