收藏
回答

跳转页面后自定义属性描述符丢失 onAppRoute

问题模块 框架类型 问题类型 终端类型 微信版本 基础库版本
框架 小程序 Bug 工具 7.0.8 试了多个基础库都有此问题

起因:我在页面实例中使用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吗?如果是,有修复计划吗。如果不是麻烦告知下什么情况下会有修改行为,我看看能否自行规避,感谢!

最后一次编辑于  11-29
回答关注问题邀请回答
收藏

1 个回答

问题标签