js資料型別的判斷方法

2022-02-19 13:02:45 字數 3535 閱讀 1687

判斷js中的資料型別有一下幾種方法:typeof、instanceof、 constructor、 prototype、 $.type()/jquery.type(),接下來主要比較一下這幾種方法的異同。

var a = "iamstring.";

var b = 222;

var c= [1,2,3];

var d = new

date();

var e = function();

var f = function();

最常見常用的判斷方法:typeof【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型別的物件時比較方便。

alert(c instanceof array) ---------------> true

alert(d

instanceof

date)

alert(f

instanceof function) ------------> true

alert(f

instanceof

function) ------------> false

注意:instanceof 後面一定要是物件型別,並且大小寫不能錯,該方法適合一些條件選擇或分支。

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了;

通用但很繁瑣的方法: 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

;大小寫不能寫錯,比較麻煩,但勝在通用。

無敵萬能的方法: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型別的情況可以選用instanceof或constructor方法,實在沒轍就使用$.type()方法。

js資料型別判斷方法

js的資料型別大體上可以分為兩種 原始型別 即基本資料型別 和物件型別 即引用資料型別 而基本資料型別細化可以分為undefined null number boolean string 而js的引用資料型別也就是物件型別object,比如 object array function data等 f...

判斷JS資料型別的方法

js是弱語言,其資料型別可以自動轉換,因此很多時候在用到資料的時刻不清楚資料的型別到底是哪種,需要進行判斷後,再執行語句。最新的ecmascript規範定義的資料型別分為兩大類,分別為基本型別和引用型別。對於資料型別的判斷,有如下的方法 tostring 方法 tostring 方法是object原...

js 判斷資料型別的封裝方法

除js內建方法外,對於數判斷據型別的實現 返回true false 是否是字串 function isstring value 是否是數字 function isnumber value 是否是布林值 function isboolean value 是否undefined function isu...