fork download
  1. function getType(data) {
  2. //получили строку вида "[Object Type]"
  3. var type = Object.prototype.toString.call(data);
  4. //оставили только "Type"
  5. type = type.slice(8, -1);
  6. //перевели в нижний регистр первый символ
  7. type = type[0].toLowerCase() + type.slice(1);
  8. /*
  9.   * здесь используем typeOf, потому что
  10.   * toString.call() возвращает
  11.   * для arguments значение не "object",
  12.   а "arguments"
  13.   */
  14. if (typeof data == "object" && type != "array" && data.length >= 0) {
  15. for (var i = 0; i < data.length; i++) {
  16. if (!data.hasOwnProperty(i.toString())) {
  17. return "object;"
  18. }
  19. }
  20. type = "array-like";
  21. }
  22. return type;
  23. }
  24.  
  25. console.log(getType(13));
  26. console.log(getType("I'm a string"));
  27. console.log(getType([1, 2, 3]));
  28. console.log(getType(true));
  29. console.log(getType(undefined));
  30. console.log(getType(function() {var x = 2 + 2; }));
  31. console.log(getType({foo: 1, bar: 2}));
  32. console.log(getType(null));
  33.  
  34. function getArguments(x, y) {
  35. return arguments;
  36. }
  37. var args = getArguments(1, 3);
  38.  
  39. console.log(getType(args));
  40.  
Runtime error #stdin #stdout #stderr 0.05s 44992KB
stdin
Standard input is empty
stdout
number
string
array
boolean
undefined
function
object
stderr
/home/B7MdN7/prog.js:14
    if (typeof data == "object" && type != "array" && data.length >= 0) {
                                                          ^
TypeError: Cannot read property 'length' of null
    at getType (/home/B7MdN7/prog.js:14:59)
    at Object.<anonymous> (/home/B7MdN7/prog.js:32:13)
    at Module._compile (module.js:460:26)
    at Object.Module._extensions..js (module.js:478:10)
    at Module.load (module.js:355:32)
    at Function.Module._load (module.js:310:12)
    at Function.Module.runMain (module.js:501:10)
    at startup (node.js:129:16)
    at node.js:814:3