В javascript вас не должно волновать, относится ли объект к определенному типу. То, что вы должны заботиться о том, есть ли у вас методы, которые вы ожидаете. Фактически, все в порядке, чтобы предоставить любой объект, если у этого объекта есть соответствующие методы, которые реализуют ожидаемое поведение для этих методов. Это одна из красот javascript. Это не сложные типы и не должны быть. Черт возьми, посмотрите на модель JQuery. Они заставляют объект jQuery поддерживать методы массива, поэтому его можно использовать вместо массива в большинстве ситуаций, хотя технически это не просто массив.
Итак, я бы посоветовал вам протестировать объект, чтобы увидеть, видите ли вы несколько ожидаемых и необходимых методов на нем и если вы их найдете, тогда весело продолжите. Если вы не нашли нужные вам методы, выведите ошибку. Это сразу же улавливает общие проблемы неправильного использования, но не слишком ограничивает использование клиентом API.
Вы можете проверить существование метода / свойства, не более чем это:
if (obj.makeQuackSound && obj.flySouthForWinter) {
// must be a duck
}
Если вы хотите проверить, являются ли они на самом деле функциями, а не просто свойствами, вы можете сделать это тоже.