跳转页面后自定义属性描述符丢失 onAppRoute
发布于 5 年前 作者 yan41 9778 次浏览 来自 官方Issues

起因:我在页面实例中使用this.$data = { aa: 1}方式定义了$data属性,然后通过Object.defineProperty修改了this.$data对象中属性的描述符

Object.defineProperty(this.$data, 'aa', {
   
enumerable: true,
   configurable: true,
   get() { return value; },
   set (newVal) { value = newVal }
});

但在某些情况下跳转其他页面再返回后,这些通过Object.defineProperty定义的属性描述符都消失了,导致代码无法劫持属性的getter和setter。

进一步验证:

Object.defineProperty(this, '$data', {
enumerable: true,
   value: {}

})

此时在跳转时会报错:

综上可以确认小程序底层有修改或拷贝自定义实例属性的行为。想问下这里是小程序底层的bug吗?如果是,有修复计划吗。如果不是麻烦告知下什么情况下会有修改行为,我看看能否自行规避,感谢!

1 回复
回到顶部