js函数调用后面直接加大括号是什么意思?

最近在看微信小程序。其中关于definitionFilter函数的用法一直不理解
例如

// behavior.js
module.exports = Behavior({
  definitionFilter(defFields) {
    defFields.data.from = 'behavior'
  },
})

// component.js
Component({
  data: {
    from: 'component'
  },
  behaviors: [require('behavior.js')],
  ready() {
    console.log(this.data.from) // 此处会发现输出 behavior 而不是 component
  }
})

在上方的代码中,在definitionFilter函数调用后,又加{}是什么意思,为什么这么写?
有点郁闷( ˇˍˇ )

阅读 3.8k
2 个回答

哪个不是函数调用。。我给你拆分一下

module.exports = Behavior({
  definitionFilter(defFields) {
    defFields.data.from = 'behavior'
  },
})

obj = {
  definitionFilter(defFields) {
    defFields.data.from = 'behavior'
  },
}
module.exports = Behavior(obj)


{
  definitionFilter(defFields) {
    defFields.data.from = 'behavior'
  },
}
等价于
{
  definitionFilter: function definitionFilter(defFields) {
    defFields.data.from = 'behavior'
  },
}


然后覆盖是因为本来哪个就是一个覆盖的方法。

clipboard.png

clipboard.png

这不是函数调用,这是es6新增的一种对象属性声明并赋值的方式,当属性为函数时,可以这样声明

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题