收藏
回答

bindtap 事件处理函数有的有function有的没有function?

比如在wxml文件中有:

<view class = "right buttonbindtap = "addLogdata-add="1">+1</view>

在Page里可以addLog是不是可以写成:

addLog(event){ ... }

也可以写成

addLog : function(event){ ... }

这两者有什么区别吗? 为什么第一个可以没有function呢?

回答关注问题邀请回答
收藏

4 个回答

  • chh
    chh
    2021-04-16

    第一种写法是ES6的对象方法简写,第二中是传统的ES5的对象方法写法:

    ES5写法:

    const obj = {
      fun: function(res) {
        ...
      } 
    }
    


    ES6对象方法简写:

     const obj = {
       fun(res) {
          ...
       }
    }
    


    而Page的参数就是传入一个对象,像data、onLoad...都是对象的属性和方法:

    Page({
      data: {
      },
      onLoad: function(e) {
       ...
      }
    })
    


    所以onLoad等对象方法都是可以简写的:onLoad(res){ ... }

    2021-04-16
    有用 1
    回复 2
    • Silong Lyu
      Silong Lyu
      2021-04-16
      非常感谢,以前没怎么用过js html css 小程序看教程写起来有点一知半解, 多谢回复
      2021-04-16
      回复
    • chh
      chh
      2021-04-16回复Silong Lyu
      举手之劳哈哈
      2021-04-16
      回复
  • 华
    2021-04-16

    第一种简写形式

    2021-04-16
    有用
    回复
  • 清茶涩
    清茶涩
    2021-04-16

    反正打包时勾选了es6转es5后都给你转换成function的方式了

    2021-04-16
    有用
    回复
  • 当乙醇爱上了铜
    当乙醇爱上了铜
    2021-04-16

    效果一样的,基本没有区别。第一种:addLog(event){ ... } 是ES6新增的一种简化的写法。

    2021-04-16
    有用
    回复 1
    • 卢霄霄
      卢霄霄
      2021-04-16
      稍微有一丢丢丢丢区别,简写的方式没有constructor,不能当构造函数用
      2021-04-16
      1
      回复
登录 后发表内容
问题标签