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

时间:2014-07-28 14:39:41

标签: javascript instanceof typechecking

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

更详细的方案

我们有通用表单提交按钮,它包含在所有表单页面中。现在我们有一个用于表单提交的通用JavaScript和每个表单页面的特定JavaScript文件。每个特定的JavaScript文件都会创建一个名为commonObjectName的对象。在表单上提交JavaScript调用验证&在commonObjectName上提交,然后调用验证&提交相应的JavaScript实例。

现在,当我需要在验证和验证之间执行某些检查时提交表单A的操作,因为表单B不需要它们,所以我在formSubmit.js中编写了以下代码

var commonObjInstanceOfFormA = commonObjectName instanceof FormAJavascript;
if(commonObjInstanceOffFormA) {
    //do something
} else {
   //do something else
}

现在,当我在表单B上时会出现问题。FormAJavascript类型给出引用错误,因为它根本不包含在表单B中。

有没有办法以字符串格式查找commonObjectName的构造函数的类型,或者以有效的方式查找对象的实例,以便我可以为类型A和A执行不同的逻辑集。 B型不同?

3 个答案:

答案 0 :(得分:1)

为什么不检查旧的typeof commonObjectName != 'undefined'?它将首先进行检查,只有在成功找到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
}

答案 1 :(得分:0)

声明您随后要测试的任何类型,同时保留它们:

var FormAJavascript = FormAJavascript || null;

测试:

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

答案 2 :(得分:0)

最后,我最终使用我的表单页面ID来确认这是哪个表单,我正在尝试在javascript&中获取formId断言字符串' formA'。如果断言成功,则表示它是表单A.

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