При написании JavaScript-сценариев часто используется функция typeof, возвращающая строковую метку о типе переданного аргумента. Рассмотрим работу функция typeof и её младшего брата - оператора instanceof.
typeof возвращает 6 типов значений, в зависимости от переданной переменной:
var func = function() {} // Функция
var num = 1; // Число
var str = ""; // Строка
var bool = true; // Логическая переменная
// Переменную undefinedVar специально не создаем
alert(
typeof obj + ", " +
typeof(func) + ", " +
typeof num + ", " +
typeof(str) + ", " +
typeof bool + ", " +
typeof(undefinedVar)
);
// Выведет "object, function, number, string, boolean, undefined"
Обратим внимание на следующие особенности:
- Допускается двоякий синтаксис, как для обычной функции: typeof(variable), так и для оператора: typeof variable.
- Значение object относится к любым типам объектов: хешам, массивам или датам.
С объектами как раз и помогает разобраться оператор instanceof, возвращающий данные о типе объекта (typeObject). Работа оператора проходит в режиме сравнения:
var arr = new Array();
alert (
(dat instanceof Date) + ", " +
(arr instanceof Array) + ", " +
(arr instanceof Date) + ", " +
(dat instanceof Array)
);
// Вернет "true, true, false, false"
// Что соответсвует действительности
Вот такой оператор, на который я по своему недосмотру долго не обращал внимание.

О каком, кстати, из висивигов идет речь?
Отпиши в профиле что-нибудь, не узнаю по нику :-)
return Object.prototype.toString.call(obj) == '[object Array]';
}