bindtap 事件处理函数有的有function有的没有function?
发布于 6 年前 作者 dlin 11363 次浏览 来自 问答

比如在wxml文件中有:

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

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

addLog(event){ … }

也可以写成

addLog : function(event){ … }

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

4 回复

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

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

ES5写法:

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

ES6对象方法简写:

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

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

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

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

第一种简写形式

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

回到顶部