вообще говоря, постановка задачи свидетельствует о непонимании принципов ООП.
В ооп практически никогда не требуется определять тип объекта, объект должен сам знать свой тип.
Пример:
A=[1,2,3]
S="xyz"
// неправильно
function foo(x){
if(x instanceof Array)
alert("array "+x.join(""));
else
alert("string "+x);
}
foo(A)
foo(S)
// правильно
Array.prototype.foo=function (){
alert("array "+this.join(""));
}
String.prototype.foo=function (){
alert("string "+this);
}
A.foo()
S.foo()