Object类型判断

  // 以下是11种:
  var number = 1;          // [object Number]
  var string = '123';      // [object String]
  var boolean = true;      // [object Boolean]
  var und = undefined;     // [object Undefined]
  var nul = null;          // [object Null]
  var obj = { a: 1 }         // [object Object]
  var array = [1, 2, 3];   // [object Array]
  var date = new Date();   // [object Date]
  var error = new Error(); // [object Error]
  var reg = /a/g;          // [object RegExp]
  var func = function a() { }; // [object Function]

  function checkType() {
    for (var i = 0; i < arguments.length; i++) {
      console.log(Object.prototype.toString.call(arguments[i]))
    }
  }

  checkType(number, string, boolean, und, nul, obj, array, date, error, reg, func)

  //除上述之外还有:
  console.log(Object.prototype.toString.call(Math)); // [object Math]
  console.log(Object.prototype.toString.call(JSON)); // [object JSON]
  function a() {
    console.log(Object.prototype.toString.call(arguments)); // [object Arguments]
  }
  a();

//封装的获取Object具体类型的方法
  function getType(obj) {
    var class2type = {};

    // 生成class2type映射
    "Boolean Number String Function Array Date RegExp Object Error".split(" ").map(function (item, index) {
      class2type["[object " + item + "]"] = item.toLowerCase();
    })
    // 一箭双雕
    if (obj == null) {
      return obj + "";
    }
    return typeof obj === "object" || typeof obj === "function" ?
      class2type[Object.prototype.toString.call(obj)] || "object" :
      typeof obj;
  }

  console.log(getType(new Date())) 
 

 

posted @ 2020-05-15 16:53  骑驴追火箭啊  阅读(857)  评论(0编辑  收藏  举报