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

  • 相关阅读:
    Android_1_渐变背景色
    js 数组常用方法说明
    js模拟键盘按键事件
    SqlServer中截取字符串
    SqlServer将日期格式DateTime转换成varchar类型
    如何经营好(开好)一家淘宝店铺
    如何才能学好javascript
    前端常用的正则表达式
    淘宝中的一些基本CSS代码
    CSS样式中伪类和伪类元素的区别(css中一个冒号和两个冒号的区别)
  • 原文地址:https://www.cnblogs.com/changzz/p/11912297.html
Copyright © 2011-2022 走看看