首页 > 解决方案 > ES6:如何从静态方法访问实例类?

问题描述

从 DOM 按钮访问类的实例及其方法的推荐方法是什么?考虑这个例子:现在我正在调用 ES6 类的静态方法,因为我不知道如何调用实例方法:

<script src="MyClass.js">
<button onClick="MyClass.buttonClicked()">

班级看起来像

   class MyClass() {
    
       static instance;
    
       constructor() {
         instance = this;
         //important initialization of some vars
       }
    
       static buttonClicked() {
          MyClass.instance.nonStaticButtonClicked();
       }
    
       nonStaticButtonClicked() {
         console.log("button clicked!");
         //use the vars which have been initialized in constructor()
       }
    
    }

这在 Chrome 中完美无缺,而在 Safari 中则完全不适用,因为显然 Safari 不喜欢静态变量声明,并在参数声明后给出错误“意外的令牌 '='。预期为 ')' 或 ','。 ,另请参阅 Marthinus Engelbrecht 的评论: SyntaxError: Unexpected token '='. Expected a ')' or a ',' after a parameter declaration.' 在野生动物园

我的问题是,如果我做错了,我应该怎么做?特别是,从按钮访问实例方法的最佳方法是什么?

编辑:我只是把事情复杂化了:

window.addEventListener("load", function() {
    window.myClass = new MyClass();
});

和按钮:

<button onClick="window.myClass.nonStaticButtonClicked()">

不需要静态调用和实例/单例。感谢大家。

标签: instancestatic-methodses6-class

解决方案


推荐阅读