function getType(data) {
//получили строку вида "[Object Type]"
var type = Object.prototype.toString.call(data);
//оставили только "Type"
type = type.slice(8, -1);
//перевели в нижний регистр первый символ
type = type[0].toLowerCase() + type.slice(1);
/*
* здесь используем typeOf, потому что
* toString.call() возвращает
* для arguments значение не "object",
а "arguments"
*/
if (typeof data == "object" && type != "array" && data.length >= 0) {
for (var i = 0; i < data.length; i++) {
if (!data.hasOwnProperty(i.toString())) {
return "object;"
}
}
type = "array-like";
}
return type;
}
console.log(getType(13));
console.log(getType("I'm a string"));
console.log(getType([1, 2, 3]));
console.log(getType(true));
console.log(getType(undefined));
console.log(getType(function() {var x = 2 + 2; }));
console.log(getType({foo: 1, bar: 2}));
function getArguments(x, y) {
return arguments;
}
var args = getArguments(1, 3);
console.log(getType(args));
ZnVuY3Rpb24gZ2V0VHlwZShkYXRhKSB7CiAgICAvL9C/0L7Qu9GD0YfQuNC70Lgg0YHRgtGA0L7QutGDINCy0LjQtNCwICJbT2JqZWN0IFR5cGVdIgogICAgdmFyIHR5cGUgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZGF0YSk7CiAgICAvL9C+0YHRgtCw0LLQuNC70Lgg0YLQvtC70YzQutC+ICJUeXBlIgogICAgdHlwZSA9IHR5cGUuc2xpY2UoOCwgLTEpOwogICAgLy/Qv9C10YDQtdCy0LXQu9C4INCyINC90LjQttC90LjQuSDRgNC10LPQuNGB0YLRgCDQv9C10YDQstGL0Lkg0YHQuNC80LLQvtC7CiAgICB0eXBlID0gdHlwZVswXS50b0xvd2VyQ2FzZSgpICsgdHlwZS5zbGljZSgxKTsKICAgIC8qCiAgICAgKiDQt9C00LXRgdGMINC40YHQv9C+0LvRjNC30YPQtdC8IHR5cGVPZiwg0L/QvtGC0L7QvNGDINGH0YLQvgogICAgICogdG9TdHJpbmcuY2FsbCgpINCy0L7Qt9Cy0YDQsNGJ0LDQtdGCCiAgICAgKiDQtNC70Y8gYXJndW1lbnRzINC30L3QsNGH0LXQvdC40LUg0L3QtSAib2JqZWN0IiwKICAgICDQsCAiYXJndW1lbnRzIgogICAgICovCiAgICBpZiAodHlwZW9mIGRhdGEgPT0gIm9iamVjdCIgJiYgdHlwZSAhPSAiYXJyYXkiICYmIGRhdGEubGVuZ3RoID49IDApIHsKICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgaWYgKCFkYXRhLmhhc093blByb3BlcnR5KGkudG9TdHJpbmcoKSkpIHsKICAgICAgICAgICAgICAgIHJldHVybiAib2JqZWN0OyIKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICB0eXBlID0gImFycmF5LWxpa2UiOwogICAgfQogICAgcmV0dXJuIHR5cGU7Cn0KCmNvbnNvbGUubG9nKGdldFR5cGUoMTMpKTsKY29uc29sZS5sb2coZ2V0VHlwZSgiSSdtIGEgc3RyaW5nIikpOwpjb25zb2xlLmxvZyhnZXRUeXBlKFsxLCAyLCAzXSkpOwpjb25zb2xlLmxvZyhnZXRUeXBlKHRydWUpKTsKY29uc29sZS5sb2coZ2V0VHlwZSh1bmRlZmluZWQpKTsKY29uc29sZS5sb2coZ2V0VHlwZShmdW5jdGlvbigpIHt2YXIgeCA9IDIgKyAyOyB9KSk7CmNvbnNvbGUubG9nKGdldFR5cGUoe2ZvbzogMSwgYmFyOiAyfSkpOwoKZnVuY3Rpb24gZ2V0QXJndW1lbnRzKHgsIHkpIHsKICAgIHJldHVybiBhcmd1bWVudHM7Cn0KdmFyIGFyZ3MgPSBnZXRBcmd1bWVudHMoMSwgMyk7Cgpjb25zb2xlLmxvZyhnZXRUeXBlKGFyZ3MpKTsK