jsの中のデータの種類を判断するいくつかの方法

8384 ワード

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
alert(c instanceof Array) ---------------> true
alert(d instanceof Date) alert(f instanceof Function) ------------> true alert(f instanceof function) ------------> false   :instanceof           ,        ,              。
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;  instanceof         ,               true: alert(aobj instanceof B) ----------------> true; alert(aobj instanceof B) ----------------> true;     ,  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()を使います.
転載先:https://www.cnblogs.com/TigerZhang-home/p/7927969.html