Javascript 从onclick调用类的实例

Javascript 从onclick调用类的实例,javascript,onclick,Javascript,Onclick,我的html文件中包含以下内容: <div class="messages"> <input id="msg" type="text" name="fname"> <input type="submit" onclick="general.add.call()" value="Send"> <input type="submit" onclick="viewMsgs()" value="view messages"&g

我的html文件中包含以下内容:

<div class="messages">
      <input id="msg" type="text" name="fname">
      <input type="submit" onclick="general.add.call()" value="Send">
      <input type="submit" onclick="viewMsgs()" value="view messages">
    </div>
除此之外,我还有:

class Channel {
  constructor() {
    this.messages = [];
  }
  add(msg) {
    this.messages.push(msg)
  }

为什么说
general
是未定义的?

general
是一个局部变量,它只存在于围绕代码的iLife中

它不是全局文件,因此您无法作为全局文件访问它


使用
addEventListener
(在IIFE中)绑定事件处理程序,而不是使用
onclick
属性。

这是因为您将整个变量declaration嵌套在
函数()中{
对于某些原因,变量存在于执行上下文中。general存在于声明它的执行上下文中,即IIFE
(function(){…})(
),无法从外部访问。
class Channel {
  constructor() {
    this.messages = [];
  }
  add(msg) {
    this.messages.push(msg)
  }