jsデータタイプと判定データタイプの方法


基本データタイプ:String、Number、Boolean、Symbol、undefined、Null引用タイプ:Object Aray Function
データの種類を判断する方法:
jsのデータの種類を判断する方法はいくつかあります.typeof、instance of、constructor、prototype、$.type()/jquery.type()、次にこれらの方法の違いを比較します.
いくつかの例を挙げます.
var a = "iamstring.";
var b = 222;
var c= [1,2,3];
var d = new Date();
var e = function(){alert(111);};
var f = function(){this.name="22";};
1、最も一般的な判断方法:typeof
alert(typeof a)   ------------> string
alert(typeof b)   ------------> number
alert(typeof c)   ------------> object
alert(typeof d)   ------------> object
alert(typeof e)   ------------> function
alert(typeof f)   ------------> function
  typeof            ,   ,  :
alert(typeof a == "string") -------------> true
alert(typeof a == String) ---------------> false
  typeof     function   ;    Object          。
2、既知のオブジェクトタイプを判断する方法:instance of
instance of原理:instancentofは、オブジェクトAが別のオブジェクトBの例であるかどうかを検出する原理は、オブジェクトBのprototypeが指すオブジェクトがオブジェクトAの[prototype]チェーン上にあるかを確認することである.もしいるなら、trueに戻り、いないならfalseに戻ります.ただし、オブジェクトBのプロトタイプがnullである場合はエラーが発生します.
alert(c instanceof Array) ---------------> true
alert(d instanceof Date)
alert(f instanceof Function) ------------> true
alert(f instanceof function) ------------> false
3、対象のconstructorによって判断する:constructor
alert(c.constructor === Array) ----------> true
alert(d.constructor === Date) -----------> true
alert(e.constructor === Function) -------> true
  : constructor         
eg:
      function A(){};
      function B(){};
      A.prototype = new B(); //A   B
      var aObj = new A();
      alert(aobj.constructor === B) -----------> true;
      alert(aobj.constructor === A) -----------> false;
          ,  construtor          constructor      :
      aobj.constructor = A; //           constructor  
      alert(aobj.constructor === A) -----------> true;
      alert(aobj.constructor === B) -----------> false; //     true ;
4、通用するが、煩わしい方法:prototype
alert(Object.prototype.toString.call(a) === ‘[object String]’) -------> true;
alert(Object.prototype.toString.call(b) === ‘[object Number]’) -------> true;
alert(Object.prototype.toString.call(c) === ‘[object Array]’) -------> true;
alert(Object.prototype.toString.call(d) === ‘[object Date]’) -------> true;
alert(Object.prototype.toString.call(e) === ‘[object Function]’) -------> true;
alert(Object.prototype.toString.call(f) === ‘[object Function]’) -------> true;
       ,    ,     。
5、無敵万能方法jquery.type()
     undefined null,      “undefined” “null”。
jQuery.type( undefined ) === "undefined"
jQuery.type() === "undefined"
jQuery.type( window.notDefined ) === "undefined"
jQuery.type( null ) === "null"
          [[Class]]             [[Class]]   ,        [[Class]]   。 
jQuery.type( true ) === "boolean"
jQuery.type( 3 ) === "number"
jQuery.type( "test" ) === "string"
jQuery.type( function(){} ) === "function"
jQuery.type( [] ) === "array"
jQuery.type( new Date() ) === "date"
jQuery.type( new Error() ) === "error" // as of jQuery 1.9
jQuery.type( /test/ ) === "regexp"
            “object”。
通常はtypeofで判断すればいいですが、予知Objectのタイプがある場合はinstance ofまたはconstructの方法を選択できます.仕方なく$type()を使います.