我在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型不同?
答案 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。但至少这是有效的。