js判断数据类型的几种方法

1. typeof

 

  鉴于 ECMAScript 是松散类型的,因此需要有种手段来检测给定变量的数据类型,typeof 就是负责提供这方面信息的操作符。对一个值使用 typeof 操作符可能返回下列某个字符串:( 缺点:对于数组和对象或null 都会返回object)
 
  "undefined"    ——如果这个值未定义;
  "boolean"    ——如果这个值是布尔值;
  "string"     ——如果这个值是字符串;
  "number"         ——如果这个值是数值;
  "object"   ——如果这个值是对象或 null;
  "function"  ——如果这个值是函数。
 
  例如:
  var message = "some string";
    alert(typeof message);   //"string"
    alert(typeof(message));    //"string"
    alert(typeof 95);             //"number"  
    var y=true;
    alert(typeof y);      //"boolean"
    var a = function() { };   
  alert(typeof a);     //"function"
  var b = [1,2,3];
    alert(typeof b);        //"object"
  var c = { }; 
  alert(typeof c);     //"object"
  var d = null;
  alert(typeof d);       //"object"
 
 
2. 类型判断
  类型判断,一般就是判断是否是数组,是否是空对象。    
   (1) 判断是否是数组 
  定义一个数组:var a = [1,2,3,4,5];

  方法一:

  toString.call(a); // "[object Array]" 

  方法二:

  a instanceof Array; //true 

  方法三:

  a.constructor == Array; //true

  第一种方法比较通用,也就是Object.prototype.toString.call(a)的简写。

  instanceof和constructor判断的变量,必须在当前页面声明的,比如,一个页面(父页面)有一个框架,框架中引用了一个页面(子页面),在子页面中声明了一个a,并将其赋值给父页面的一个变量,这时判断该变量,Array == object.constructor会返回false;

  (2)判断是否是空对象

     定义一个变量:var obj = {};

  方法一:

  JSON.stringify(obj); // "{}"通过转换成JSON对象来判断是否是空大括号

  方法二:

  if(obj.id){ //如果属性id存在....}这个方法比较土,大多数人都能想到,前提是得知道对象中有某个属性。

  方法三: 

  function isEmptyObject(e) {
    var t; for (t in e) return !1; return !0 } //true isEmptyObject(obj);
    //false isEmptyObject({ "a":1, "b":2});
 
  这个方法是jQuery的isEmptyObject()方法的实现方式。
posted @ 2019-12-25 17:39  执手听风吟  阅读(2405)  评论(0编辑  收藏  举报