jsの中のデータの種類を判断するいくつかの方法
8384 ワード
jsのデータの種類を判断する方法はいくつかあります.typeof、instance of、constructor、prototype、$.type()/jquery.type()、次にこれらの方法の違いを比較します.
いくつかの例を挙げます.
転載先:https://www.cnblogs.com/TigerZhang-home/p/7927969.html
いくつかの例を挙げます.
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、最も一般的な判断方法:typeofalert(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 ofalert(c instanceof Array) ---------------> true
alert(d instanceof Date) alert(f instanceof Function) ------------> true alert(f instanceof function) ------------> false :instanceof , , 。
3、対象のconstructorによって判断する:constructoralert(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、通用するが、煩わしい方法:prototypealert(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