Javascript 检查Typescript类是否已实例化
我对Typescript(以及OOP)几乎是新手,我有一个如下模块: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', ()=>
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)代码>将删除它。谢谢,这对我帮助很大。关于我的项目和我的理解。