Javascript 检查Typescript类是否已实例化

Javascript 检查Typescript类是否已实例化,javascript,jquery,class,typescript,prototype,Javascript,Jquery,Class,Typescript,Prototype,我对Typescript(以及OOP)几乎是新手,我有一个如下模块: module SIMULATOR { export class myClass extends myBaseClass{ constructor(){ //Make a div and append it to body } } } 我有一个带有onClick函数的元素,它调用myClass,如下所示: $(button).on('click', ()=>

我对Typescript(以及OOP)几乎是新手,我有一个如下模块:

module SIMULATOR {
    export class myClass extends myBaseClass{
        constructor(){
        //Make a div and append it to body
        }
    }
}
我有一个带有onClick函数的元素,它调用myClass,如下所示:

$(button).on('click', ()=> {
    if(//class hasn't been instantiated yet){
        var myDiv = new SIMULATOR.myClass();
    }
    else{
        //do other stuff (eg: delete myClass instance)
    }
});
我的第一个目标是了解如何检查myClass是否已经实例化

稍后我将用jquery销毁创建的div,我想知道如何“销毁”myClass实例


如果这些问题看起来很傻,我很抱歉:我是初学者:)

这与在常规javascript中检查它是一样的。您需要查看该对象是
null
还是
未定义


Typescript非常有助于您进行开发,但在运行时,所有内容都会编译为纯javascript。

使用局部作用域变量作为myDiv,它永远不会被初始化。我建议将它移到内联函数之外。John是正确的,您需要做的只是检查null或undefined,这样您就可以将变量名放在if stagement中作为null,undefined等于false

var myDiv;
$(button).on('click', ()=> {
    if(!myDiv){
        myDiv = new SIMULATOR.myClass();
    }
    else{
        //do other stuff (eg: delete myClass instance)
    }
});

希望这对您有所帮助

因为您使用的是jQuery:),下面是我将如何做到这一点:

$(button).on('click', ()=> {
    var myDiv: SIMULATOR.myClass = $(button).data('myClass');
    if(myDiv){
        //do other stuff (eg: delete myClass instance)
    }
    else {
        // myDiv has not been instantiated
        myDiv = new SIMULATOR.myClass();
        $(button).data('myClass', myDiv)
    }
});
这实际上将类的实例存储在jQuery的数据结构中的内存中,而不是作为
data-
属性。如果实例位于数据结构中,则可以继续。如果不是,则创建它并将其添加到数据结构中

要从数据结构中删除实例,请使用
$(button).data('myClass',null)


这不会处理对象,但会删除对象的引用,以便JavaScript引擎将其作为垃圾收集。

无法判断是否已在没有外部跟踪机制的情况下实例化了类。我建议将类的实例添加到与按钮关联的数据中。例如,在
上的
$(按钮).data('myClass',myDiv)
中。您可以通过执行
if($(按钮)…data('myClass')){//myClass已经实例化}
来检查它是否已经存在。这假设jQuery,您没有将其添加为标记,因此我没有将其添加为答案。好的,您的意思是向按钮添加数据属性,因此如果数据属性存在,则按钮已被单击。这是一个解决方案,我还可以添加一个类属性,在构造函数中将其设置为true,并在onCLick函数中检查它。我在寻找一个更简洁的解决方案。PS:a添加了Jquery标记;)你是说whit“typeof”?我是说你需要在某个时候创建它<代码>var myClass
然后在其他地方实例化它(或者在当时,但检查它是否始终为真…)
myClass=new Simulator.myClass()
如果(myClass=='undefined'| | myClass===null)这就像一个魔咒一样有效,你可以在别处用
检查它!如果我想删除那个实例$(按钮)。数据(“”);是否删除它?
$(按钮)。数据('myClass',null)将删除它。谢谢,这对我帮助很大。关于我的项目和我的理解。