ES6类中的嵌套方法?

时间:2017-01-31 00:52:54

标签: javascript node.js ecmascript-6

我一直在尝试遵循DRY编程,我一直在重复自己,所以我尝试在父方法中嵌套方法来帮助一些代码。

chat() {
  client.on("chat", (channel, user, message, self) => {

   method() {
     // code here
   }

   method() {
     // code here
   {

  }
}

但这并没有像预期的那样成功 致电class.chat.method()并没有带回任何东西。我真正需要帮助的是删除我的DRY编程我每次使用的方法都调用client.on("chat", callback())。好奇是否可以预防这种情况,并且只有一个片段,其中包含调用其中的方法。

完整代码:

watchFor(command, res, sendersName, prefix) {
    this.client.on("chat", (channel, user, message, self) => {
        console.log(this._showSendersName.whitelistedCommands);
        if (message == this.prefix + command || message == prefix + command) {
            return this.client.say(channel, res);
        }
    });
}
modOnly(command, res) {
    this.client.on("chat", (channel, user, message, self) => {
        if (this._showSendersName == false) {
            if (self) return
        }
        if (message == this.modPrefix + command && user.mod || message == this.prefix + command && user.mod) {
            return this.client.say(channel, res);
        } 
    });
} 
broadcasterOnly(command, res) {
    this.client.on("chat", (channel, user, message, self) => {
            if (this._showSendersName == false) {
                if (self) return
            }
            if (message == this.prefix + command && user.badges.broadcaster == 1) {
                return this.client.say(channel, res);
            }
    });
}   

1 个答案:

答案 0 :(得分:1)

您不能在对象初始值设定项之外使用ES6方法定义速记。尝试在函数范围内声明另一个函数:

chat() {
  client.on("chat", (channel, user, message, self) => {

    const sharedMethod = () => {
      // code here
    }

    sharedMethod()
  })
}