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 } ) ) ;
console.log ( getType( null ) ) ;
function getArguments( x, y) {
return arguments;
}
var args = getArguments( 1 , 3 ) ;
console.log ( getType( args) ) ;
ZnVuY3Rpb24gZ2V0VHlwZShkYXRhKSB7CiAgICAvL9C/0L7Qu9GD0YfQuNC70Lgg0YHRgtGA0L7QutGDINCy0LjQtNCwICJbT2JqZWN0IFR5cGVdIgogICAgdmFyIHR5cGUgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZGF0YSk7CiAgICAvL9C+0YHRgtCw0LLQuNC70Lgg0YLQvtC70YzQutC+ICJUeXBlIgogICAgdHlwZSA9IHR5cGUuc2xpY2UoOCwgLTEpOwogICAgLy/Qv9C10YDQtdCy0LXQu9C4INCyINC90LjQttC90LjQuSDRgNC10LPQuNGB0YLRgCDQv9C10YDQstGL0Lkg0YHQuNC80LLQvtC7CiAgICB0eXBlID0gdHlwZVswXS50b0xvd2VyQ2FzZSgpICsgdHlwZS5zbGljZSgxKTsKICAgIC8qCiAgICAgKiDQt9C00LXRgdGMINC40YHQv9C+0LvRjNC30YPQtdC8IHR5cGVPZiwg0L/QvtGC0L7QvNGDINGH0YLQvgogICAgICogdG9TdHJpbmcuY2FsbCgpINCy0L7Qt9Cy0YDQsNGJ0LDQtdGCCiAgICAgKiDQtNC70Y8gYXJndW1lbnRzINC30L3QsNGH0LXQvdC40LUg0L3QtSAib2JqZWN0IiwKICAgICDQsCAiYXJndW1lbnRzIgogICAgICovCiAgICBpZiAodHlwZW9mIGRhdGEgPT0gIm9iamVjdCIgJiYgdHlwZSAhPSAiYXJyYXkiICYmIGRhdGEubGVuZ3RoID49IDApIHsKICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgaWYgKCFkYXRhLmhhc093blByb3BlcnR5KGkudG9TdHJpbmcoKSkpIHsKICAgICAgICAgICAgICAgIHJldHVybiAib2JqZWN0OyIKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICB0eXBlID0gImFycmF5LWxpa2UiOwogICAgfQogICAgcmV0dXJuIHR5cGU7Cn0KCmNvbnNvbGUubG9nKGdldFR5cGUoMTMpKTsKY29uc29sZS5sb2coZ2V0VHlwZSgiSSdtIGEgc3RyaW5nIikpOwpjb25zb2xlLmxvZyhnZXRUeXBlKFsxLCAyLCAzXSkpOwpjb25zb2xlLmxvZyhnZXRUeXBlKHRydWUpKTsKY29uc29sZS5sb2coZ2V0VHlwZSh1bmRlZmluZWQpKTsKY29uc29sZS5sb2coZ2V0VHlwZShmdW5jdGlvbigpIHt2YXIgeCA9IDIgKyAyOyB9KSk7CmNvbnNvbGUubG9nKGdldFR5cGUoe2ZvbzogMSwgYmFyOiAyfSkpOwpjb25zb2xlLmxvZyhnZXRUeXBlKG51bGwpKTsKCmZ1bmN0aW9uIGdldEFyZ3VtZW50cyh4LCB5KSB7CiAgICByZXR1cm4gYXJndW1lbnRzOwp9CnZhciBhcmdzID0gZ2V0QXJndW1lbnRzKDEsIDMpOwoKY29uc29sZS5sb2coZ2V0VHlwZShhcmdzKSk7Cg==