zoukankan      html  css  js  c++  java
  • 如何判断JavaScript数据具体类型

    昨晚做了阿里的题目,让我写一个函数,可以判断数据的具体类型。其实题目很简单的。。。但是真的是自己不太注意吧,写的很糟糕啊。

    然后今天就自己写了一个,然后又到晚上搜了下,看看别人的写法,结果发现自己有点思维受限啊,不够开阔啊,那些方法其实都是见过的,可能是自己没有梳理过,或者认真对待。今天就把这些方法整理一下。

    1、基本数据类型采用typeof,这个返回的都是很准的。

    var a = "iamstring.";
    var b = 222;
    var c= [1,2,3];
    var e = function(){alert(111);};
    var f = function(){this.name="22";};
    
    alert(typeof a)   ------------> string
    alert(typeof b)   ------------> number
    alert(typeof c)   ------------> object//数组是引用类型的
    alert(typeof f)   ------------> function
    alert(typeof e)   ------------> function

     

    2、引用类型采用instanceof, 主要针对的是采用new 实例化的对象。

    var a = new String("iamstring.");
    var b = new Number(222);
    var c = new Array(222,2,4);
    var e = function(){console.log(111);};
    var f = function(){this.name="22";};
    var f = function(){this.name="22";};
    var h = new Error("foo");
    
    console.log(a instanceof String)    //true  
    console.log(b instanceof Number)    //true  
    console.log(c instanceof Array)     //true  
    console.log(e instanceof Function)  //true   
    console.log(f instanceof Function)  //true  
    console.log(h instanceof Error)     //true  

    3、根据constructor来判断

    其中a-h跟上面的一样,就不重复定义了,注意不带引号的,是要大写

    var i="str", arr=[1], num=1;
    console.log(a.constructor=== String)    //true  
    console.log(b.constructor=== Number)    //true  
    console.log(c.constructor=== Array)     //true  
    console.log(e.constructor=== Function)  //true   
    console.log(f.constructor=== Function)  //true  
    console.log(h.constructor===Error)      //true 
    console.log(i.constructor===String)     //true 
    console.log(num.constructor=== Number)    //true  
    console.log(arr.constructor=== Array)     //true 

    4、toString()方法,这是最通用的,大小写不能写错,有点麻烦

    console.log(Object.prototype.toString.call(a) === ‘[object String]’) -------> true;
    
    console.log(Object.prototype.toString.call(b) === ‘[object Number]’) -------> true;
    
    console.log(Object.prototype.toString.call(c) === ‘[object Array]’) -------> true;
    
    console.log(Object.prototype.toString.call(d) === ‘[object Date]’) -------> true;
    
    console.log(Object.prototype.toString.call(e) === ‘[object Function]’) -------> true;
    
    console.log(Object.prototype.toString.call(f) === ‘[object Function]’) -------> true;

    5、可以采用一些某些数据类型采用的方法

    比如:string 类型的 replace

    regexp类型的test, exec

    数组还有一种判断方法:Array.isArray()

    date 类型的 getMonth()等

  • 相关阅读:
    文章块引用模版
    悬停工具提示
    各个知识点
    Github Fork 缎带.html
    css重置样式
    暗灰色的圆形按钮.html
    css中的居中的方法
    display:table的几个用法 块级子元素垂直居中
    <meta>标签中http-equiv属性的属性值X-UA-Compatible详解
    jQuery难学是因为什么?
  • 原文地址:https://www.cnblogs.com/huansky/p/5853299.html
Copyright © 2011-2022 走看看