所以这就是我在伪代码中要做的事情:
array = new Array();
thisObj = new objectTypeOne();
thisObj2 = new objectTypeTwo();
array.push(thisObj);
array.push(thisObj2);
for( i=0; i<=array.length, i++)
{
if( array[i] == objectTypeOne() )
{
//do code
}
}
我知道每个对象类型可以有两个不同的数组,但这会破坏我的其他许多代码,这些代码假设它们都在同一个数组中。 (他们是实际相同的对象,有轻微但重要的差异,我想我应该真的有objectTypeTwo派生自其他人,但目前这无关紧要。)
答案 0 :(得分:1)
我相信你所寻找的是:
if(array[i] is MyObjectType) {
//I found an instance of MyObjectType
}
运算符“is”执行运行时类型分析,如果您正在测试的对象(在此示例中为array[i]
)直接与您要比较的类型或者子类(在此示例中为MyObjectType
)。您可能还想使用typeof进行调查。但是,尽量避免像这样调用TON或使用“typeof”调用...在运行时查找类型信息在任何语言中都是昂贵的。
答案 1 :(得分:1)
首先将此i<=array.length
更正为i<array.length
。这就是“术语未定义”错误的原因。
@Ascension Systems建议的解决方案可以在创建不同类的实例时使用,例如
array = new Array();
thisObj = new Student();
thisObj2 = new Employee();
array.push(thisObj);
array.push(thisObj2);
然后你可以检查
for( i=0; i<array.length, i++)
{
if( array[i] is Student )
{
//do code
}else if(array[i] is Employee){
}
}
如果您使用自定义对象,请执行此操作
array = new Array();
thisObj = new Object();
thisObj.type = "type1";
....
....
thisObj2 = new Object();
thisObj2.type = "type2";
...
...
array.push(thisObj);
array.push(thisObj2);
for( i=0; i<array.length, i++)
{
if( array[i].type == "type1" )
{
//do code
}else if( array[i].type == "type2"){
}
}