• jquery判断数据类型源码解读


    var class2type = {};
    ("Boolean Number String Function Array Date RegExp Object Error").split(" ").forEach(function(item,index){
      class2type["[object "+item+']'] = item.toLowerCase();
    })
    function type(param){
      if(param == null){
        return String(param);
      }
      return typeof param === "object" || typeof param === "function" ?class2type[ Object.prototype.toString.call(param) ] || 'obejct':typeof param;
    }
    console.log(type(123)) //number

    这里主要运用了typeof操作符和Object原型的toString方法。
    typeof主要用于基本数据类型的判断,对于引用类型函数返回'function'其余都返回‘object’,无法确定引用类型的最终类型。
    Object.prototype.toString.call(obj) 可用于所有类型数据的类型判断

    console.log(Object.prototype.toString.call(true));//[object Boolean]
    console.log(Object.prototype.toString.call(123));//[object Number]
    console.log(Object.prototype.toString.call("jone"));//[object String]
    console.log(Object.prototype.toString.call(undefined));//[object Undefined]
    console.log(Object.prototype.toString.call(null));//[object Null]
    console.log(Object.prototype.toString.call({}));//[object Object]
    console.log(Object.prototype.toString.call(function(){}));//[object Function]
    console.log(Object.prototype.toString.call([]));//[object Array]
    console.log(Object.prototype.toString.call(new Date));//[object Date]
    console.log(Object.prototype.toString.call(/d/));//[object RegExp]

    由于toString()是一个方法会增加计算机负担,这里作者尽量用typeof来判断,typeof判断不了的才用toString()方法进一步判断,最终可以返回精确的数据类型。

  • 相关阅读:
    用机器学习来预测一个活动的总交易额值
    点击率模型的二三事
    git教程
    shell的查找与替换
    python中列表和元组以及字符串的操作
    自然语言处理第一课
    shell入门
    python基础知识
    SQL指令中一些特别值得注意的地方
    【python】json
  • 原文地址:https://www.cnblogs.com/changzz/p/11912297.html
Copyright © 2020-2023  润新知