收藏
回答

基本数据类型添加了getter,解析不了

app.js

App({

    onLaunch: function () {

        Number.prototype.__defineGetter__('ap', function () { return this / 100 })

    }

})


index.js

data: {

    num: new Number(123456789)

},

onLoad: function(){

    console.log(this.data.num.ap)            //1234567.89

}


index.wxml

{{  num }}  可以解析   {{  num.ap }}  解析不了,空白


是bug,还是刻意为之


最后一次编辑于  07-17  (未经腾讯允许,不得转载)
回答关注问题邀请回答
收藏

1 个回答

  • 兰昊
    兰昊
    07-16

    可以搞成这样啊  {{num.value}} {{num.ap}}



    小程序搞不了那么多骚操作

    因为js的逻辑和渲染不是同一个运行环境

    你setData的时候其实是调用了JSON.stringify 把数据搞成字符串之后再发给渲染线程,渲染线程在解析成object之后一顿diff操作再更新到UI上。


    JSON.stringify 的时候prototype这种东西会直接忽略掉,你的数据序列化之后就是一个plain object,就没有啥骚特性了。


    你可以参考小程序官方文档上的资料:

    setData工作原理

    https://developers.weixin.qq.com/miniprogram/dev/framework/performance/tips.html





    当然,你在react里面setState搞是完全没有问题的,因为是对象,引用,不存在有序列话和反序列化的过程

    07-16
    赞同
    回复 2
    • 37.5℃
      37.5℃
      07-17
      不是setData的问题吧,直接在data里定义 num: new Number(123456789),也不行
      07-17
      回复
    • 兰昊
      兰昊
      07-17回复37.5℃
      是的呀。你写在wxml里面的都不行
      07-17
      回复