определяем number string array object function

определяем number string array object function

by Сергей Тарасевич

JavaScript

// определяем number string array object function
function obj(a) {
  var b = typeof a;
  if ("object" == b) {
    if (a) {
      if (a instanceof Array) {
        return "array";
      }
      if (a instanceof Object) {
        return b;
      }
      var c = Object.prototype.toString.call(a);
      if ("[object Window]" == c) {
        return "object";
      }
      if ("[object Array]" == c || "number" == typeof a.length && "undefined" != typeof a.splice && "undefined" != typeof a.propertyIsEnumerable && !a.propertyIsEnumerable("splice")) {
        return "array";
      }
      if ("[object Function]" == c || "undefined" != typeof a.call && "undefined" != typeof a.propertyIsEnumerable && !a.propertyIsEnumerable("call")) {
        return "function"
      }
    } else {
      return "null";
    }
  } else {
    if ("function" == b && "undefined" == typeof a.call) {
      return "object";
    }
  }
  return b
}
var a = {
	a : function() {},
  b : 1,
  c : '1',
  d : [1, 'fdsf'],
  i : {
  	a : 1,
    b : ''
  }
}
console.log(obj(a));
console.log(obj(a.a));
console.log(obj(a.b));
console.log(obj(a.c));
console.log(obj(a.d));
console.log(obj(a.d[0]));
console.log(obj(a.d[1]));
console.log(obj(a.i));
console.log(obj(a.i.a));
console.log(obj(a.i.b));