这样是JS什么写法?

微信小程序中的一段代码:

.....
app.watch.$emit(key, value);
....
watch: (function () {
    let events = {};
    return {
      $once(name, callback) {
        events[name] = callback;
      },
      $emit(key, value) {
....

app.watch.$emit
这里为何能直接调用watch方法中的$emit?不是应该只能调用watch方法吗?

阅读 972
1 个回答

这里完整的 watch 应该是

(function () {
    // TODO
})() // <-- 也就是 watch 实际是一个立即调用函数,在声明后就调用了, 他的返回值就是函数体里面 return 的 `$once`, `$emit`

相关的知识:闭包、IIFE(立即调用函数表达式)

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