美文网首页
【总结】2017.03.03

【总结】2017.03.03

作者: I_am_Cynthia | 来源:发表于2017-03-03 22:18 被阅读0次

    2017.03.03

    - 计划
    - 实际完成
    • 完善hM侧边栏组件化
    • 将弹出框也封装
    - 总结
    • Cannot call a class as a function at _classCallCheck babel之class处理

    • Step1: 定义
      Class Person{} 被编译为:

    function _classCallCheck(instance, Constructor) { 
        // 检查是否成功创建了一个对象 
        if (!(instance instanceof Constructor)) { 
            throw new TypeError("Cannot call a class as a function"); 
        }
    }
    var Person = function Person() { _classCallCheck(this, Person); };
    ```
    你可能会一头雾水,_classCallCheck是什么?其实很简单,它是为了保证调用的安全性。 
    比如我们这么调用:   
    // ok ` new p = new Person();`
    是没有问题的,但是直接调用:  
    // Uncaught TypeError: Cannot call a class as a function Person();
    就会报错,这就是_classCallCheck所起的作用。具体原理自己看代码就好了,很好理解。 
    我们发现,Class关键字会被编译成构造函数,于是我们便可以通过new来实现实例的生成。
    Step2:Constructor探秘
    我们这次尝试加入constructor,再来看看编译结果:   
    class Person() { constructor(name) { this.name = name; this.type = 'person' } }
    编译结果:   
    var Person = function Person(name) { _classCallCheck(this, Person); this.type = 'person'; this.name = name; };
    看上去棒极了,我们继续探索。
    
    • class Menu {}
      若在object中 { menu: Menu },调用会报错。class不能以对象形式调用,虽然会解析成function Menu () {}。
      只能通过new Menu() 去调用。
      参考:写一个微信小程序自定义公共组件
      内调用class 是 App({ LoginPannel })
      new app.LoginPannel()
    • template 使用展开的数据是 data="{{ ...obj }}", 若page.data上没有定义 obj ,在template 内使用wx:for循环输出列表会报错。就算在onLoad事件上setData也是有误的。
    • VM18377:2 firstRender not the data from Page.data
    • firstRender not the data from Page.data;firstRender not the data from Page.data Error: firstRender not the data from Page.data

    相关文章

      网友评论

          本文标题:【总结】2017.03.03

          本文链接:https://www.haomeiwen.com/subject/imzrgttx.html