zoukankan      html  css  js  c++  java
  • 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()方法进一步判断,最终可以返回精确的数据类型。

  • 相关阅读:
    OC与JS交互之WKWebView
    iOS下JS与OC互相调用(三)--MessageHandler
    html base64 img 图片显示
    Vue中img的src属性绑定与static文件夹
    XML 树结构
    XML 用途
    XML 简介
    JS Window对象
    JS Math对象
    JS 字符串操作
  • 原文地址:https://www.cnblogs.com/changzz/p/11912297.html
Copyright © 2011-2022 走看看