2013-05-08 3 views
1

Я работаю над объектно-ориентированным проектом в JavaScript. У меня есть массив [] объектов разных классов, и я повторяю его, и я хочу проверить класс объекта в массиве [i]. Есть ли способ обнаружить это? Это может помочь вам понять, что я имею в виду:Как определить, какой класс является объектом в массиве в JavaScript

var pieces = [new Pawn(), new Rook(), new Knight()]; 
for(var i = 0; i < pieces.length; i++){ 
    if(pieces[i] == Rook){ 
     //Do something with the rook 
    } 
} 

Это общее представление о том, что мне нужно делать, но если условие является сложным немного. Как я могу определить класс элемента по частям [i]? Моим резервным решением является предоставление каждому объекту поля типа.

ответ

2

Это может зависеть от того, как у вас есть наследование настроить, но в целом вы убедитесь, что с instanceof operator:

if(pieces[i] instanceof Rook) // ... 
+0

Ах работал как шарм. Спасибо! –

+0

Будьте осторожны с * instanceof *, все, что он делает, это проверить, что 'Rook.prototype' находится в частной цепочке' [[prototype]] '' pieces [i] '. Это может быть ОК в зависимости от того, как вы реализовали свое наследование и что вам действительно нужно знать. Свойство конструктора может быть более подходящим (это общедоступное свойство, поэтому его можно установить на подходящее значение при первоначальном наследовании). – RobG