在JavaScript中创建类onclick的新实例的正确方法是什么?

问题描述 投票:1回答:1

类示例:

$(document).ready(function(){

    var $ = function(id)
    {
        return document.getElementById(id);
    }

    class someClass
    {
        constructor()
        {
            ...
        }
        someMethod()
        {
            ...
        }
    }
... // rest of examples within this scope
});

到目前为止,我能够在窗口加载时创建类对象的实例,然后在按钮单击事件上调用该类的方法同时也是绑定this

var obj = new someClass()
$('startButton').onclick = obj.someMethod.bind(obj)

在我想要通过删除并创建该类对象的新实例进行重置之前,所有方法都工作正常。我尝试了几种不同的方法:

首先,我试图在按钮单击时调用一个函数,该函数比以前执行更多的任务(实例化一个新对象)。我尝试了以下两种方法:在全局范围内声明变量obj,为类型指定var并将其分配给null,然后尝试重新分配它,并在单击按钮时绑定this。在我尝试调用我的setup()方法之前,此方法一直有效:

$('startButton').onclick = function() {
    var obj = new someClass();
    var obj.setup.bind(obj); // fails to call
}

然后我尝试了另一条路线,该路线或多或少地将我降落在同一地点:

$('startButton').addEventListener('click', function(event) {
    var obj = new someClass();
    console.log('obj is an instance of someClass?', obj instanceof someClass); // returns true
    obj.setup.bind(obj); // fails to call
});

[没有在someClass中创建新的方法来手动将所有类属性重置为初始值(我宁愿重新调用构造函数),如何在单击按钮时优雅地实例化新的类对象

是否可以绑定this

[当我这样做时,可以重新分配保存类对象的变量,而无需先将其标记为GC或以某种方式对其进行分配吗?没有其他引用。如果我的术语不正确,请提前致歉,我是新来的。

类示例:$(document).ready(function(){var $ = function(id){return document.getElementById(id);} class someClass {Constructor(){.....

javascript class instantiation
1个回答
0
投票
obj.setup.bind(obj)将上下文绑定到函数,但不调用它。您要么需要调用它:

obj.setup.bind(obj)();

© www.soinside.com 2019 - 2024. All rights reserved.