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()方法的實現方式。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM