如何获取字符串格式的javascript对象类型?

如何获取字符串格式的javascript对象类型?,javascript,instanceof,typechecking,Javascript,Instanceof,Typechecking,我在JavaScript中工作,我需要检查自定义JavaScript对象的实例&如果该对象的实例是customTypeA,那么我需要执行某些功能,在所有其他情况下,我们需要执行一些不同的逻辑集 更详细的场景: 我们有一个通用的表单提交按钮,它包含在所有表单页面上。现在我们有了一个用于表单提交的通用JavaScript和用于每个表单页面的特定JavaScript文件。这些特定的JavaScript文件中的每一个都创建了一个名为commonObjectName的对象。其中,表单submit Java

我在JavaScript中工作,我需要检查自定义JavaScript对象的
实例&如果该对象的实例是customTypeA,那么我需要执行某些功能,在所有其他情况下,我们需要执行一些不同的逻辑集

更详细的场景

我们有一个通用的表单提交按钮,它包含在所有表单页面上。现在我们有了一个用于表单提交的通用JavaScript和用于每个表单页面的特定JavaScript文件。这些特定的JavaScript文件中的每一个都创建了一个名为
commonObjectName
的对象。其中,表单submit JavaScript在
commonObjectName
上调用validate&submit,这将反过来为相应的JavaScript实例调用validate&submit

现在,当我需要在表单A的validate&submit操作之间执行某些检查时,因为表单B不需要这些操作,所以我在formSubmit.js中编写了以下代码

var commonObjInstanceOfFormA = commonObjectName instanceof FormAJavascript;
if(commonObjInstanceOffFormA) {
    //do something
} else {
   //do something else
}
现在,当我在表单B上时,问题就出现了。
FormAJavascript
type给出了一个引用错误,因为它根本不包含在表单B中


有没有办法找到字符串格式的
commonObjectName
构造函数的类型,或者高效地找到对象的实例,这样我就可以为类型a执行不同的逻辑集&为类型B执行不同的逻辑集?

为什么不使用好的
typeof commonObjectName!='未定义“
?它将首先进行检查,只有在成功找到
commonObjectName
时,才会尝试按类型匹配它,然后对formB上的objectB重复相同的检查

var commonObjInstanceOfFormA = typeof commonObjectName != 'undefined' &&  commonObjectName instanceof FormAJavascript;
var commonObjInstanceOfFormB = typeof commonObjectName != 'undefined' &&  commonObjectName instanceof FormBJavascript;
if(commonObjInstanceOffFormA) {
    //do something
} else {
   //do something else
}

声明随后要测试的任何类型,同时保留它们(如果存在):

var FormAJavascript = FormAJavascript || null;
使用以下各项进行测试:

if (FormAJavascript != null && commonObjectName instanceof FormAJavascript)

最后,我使用我的表单页面id来确认这是哪种表单,我试图用javascript获取formId&用字符串“formA”断言它。如果断言成功,则表示它是表单A


我仍然希望有一种优雅的方式来查找表单,而不是在每个表单上检查表单id。但至少这是可行的。

检查此FTR这表明设计不好。commonObjectName将在所有表单上定义,因此该变量的类型永远不会是未定义的,除非它根本不是表单页面。不过,感谢您的回复。这种方法也给出了ReferenceError,因为FormAJavascript从未被导入&page不知道它的存在。它不会知道,因为它是用
var
-