Несколько дней назад я создавал простую функцию определения типа, может быть, она полезна для тебя:
Использование:
//...
if (typeString(obj) == 'array') {
//..
}
Выполнение:
function typeString(o) {
if (typeof o != 'object')
return typeof o;
if (o === null)
return "null";
//object, array, function, date, regexp, string, number, boolean, error
var internalClass = Object.prototype.toString.call(o)
.match(/\[object\s(\w+)\]/)[1];
return internalClass.toLowerCase();
}
второй вариант этой функции более строгий, поскольку он возвращает только типы объектов, описанные в спецификация ECMAScript (возможные выходные значения: "object", "undefined", "null" и "function", "array", "date", "regexp", "string", "number", "boolean" "error", используя _ 14_ внутреннее свойство).
person
Christian C. Salvadó
schedule
04.05.2010
console.log(). Это меня заинтриговало, потому что если вы передадите ему массив, он выполнит итерацию по всему массиву и распечатает его. Хотя если вы просто передадите ему одну строку, он просто записывает это. Как оно работает? - person Alex   schedule 04.05.2010Array.toString. - person outis   schedule 04.05.2010console.logявляется встроенной функцией и, следовательно, имеет доступ к информации, недоступной для сценария JS. - person outis   schedule 04.05.2010supportsObject, который в основном используетinstanceof(например, code.google.com/p/fbug/source/browse/branches/firebug1.6/). Firebug Lite (code.google.com /p/fbug/source/browse/branches/firebug1.6/lite/) косвенно используетtoString(вызываетobj + ''). - person outis   schedule 04.05.2010