收藏
回答

跳转页面后自定义属性描述符丢失 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吗?如果是,有修复计划吗。如果不是麻烦告知下什么情况下会有修改行为,我看看能否自行规避,感谢!

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

1 个回答

  • 灵芝
    灵芝
    2019-11-22

    麻烦提供能复现问题的代码片段,thanks(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html

    2019-11-22
    有用
    回复 5
    • TuTu
      TuTu
      2019-11-25
      现在不清楚需要什么代码才能复现,没法提供代码片段。你们根据报错信息review下代码看看?
      2019-11-25
      回复
    • 灵芝
      灵芝
      2019-11-25回复TuTu
      只有工具有这个问题?具体是哪个版本的工具?
      2019-11-25
      回复
    • TuTu
      TuTu
      2019-11-25回复灵芝
      真机也有问题,工具是1.02.1910120
      2019-11-25
      回复
    • 灵芝
      灵芝
      2019-11-26回复TuTu
      还是无法复现的,能否给个代码片段看下
      2019-11-26
      回复
    • TuTu
      TuTu
      2019-11-27回复灵芝
      终于找到复现条件了 https://developers.weixin.qq.com/s/C0jnBcmF7Qd4
      2019-11-27
      回复
登录 后发表内容
问题标签