js中資料型別的判斷的方法

2021-10-07 08:33:35 字數 2396 閱讀 8068

返回資料型別,包含這7種: number、boolean、symbol、string、object、undefined、function。

typeof null 返回型別錯誤,返回object

引用型別,除了function返回function型別外,其他均返回object。

其中,null 有屬於自己的資料型別 null , 引用型別中的 陣列、日期、正則 也都有屬於自己的具體型別,而 typeof 對於這些型別的處理,只返回了處於其原型鏈最頂端的 object 型別,沒有錯,但不是我們想要的結果。

tostring() 是 object 的原型方法,呼叫該方法,預設返回當前物件的 [[class]] 。這是乙個內部屬性,其格式為 [object ***] ,其中 *** 就是物件的型別。

判斷型別舉例:

object.prototype.tostring.

call(''

);// [object string]

object.prototype.tostring.

call(1

);// [object number]

object.prototype.tostring.

call

(true);

// [object boolean]

object.prototype.tostring.

call

(symbol()

);//[object symbol]

object.prototype.tostring.

call

(undefined)

;// [object undefined]

object.prototype.tostring.

call

(null);

// [object null]

object.prototype.tostring.

call

(new

function()

);// [object function]

object.prototype.tostring.

call

(new

date()

);// [object date]

object.prototype.tostring.

call([

]);// [object array]

object.prototype.tostring.

call

(new

regexp()

);// [object regexp]

object.prototype.tostring.

call

(new

error()

);// [object error]

object.prototype.tostring.

call

(document)

;// [object htmldocument]

object.prototype.tostring.

call

(window)

;//[object global] window 是全域性物件 global 的引用

constructor是原型prototype的乙個屬性,當函式被定義時候,js引擎會為函式新增原型prototype,並且這個prototype中constructor屬性指向函式引用, 因此重寫prototype會丟失原來的constructor。

不過這種方法有問題:

1:null 和 undefined 無constructor,這種方法判斷不了。

2:還有,如果自定義物件,開發者重寫prototype之後,原有的constructor會丟失,因此,為了規範開發,在重寫物件原型時一般都需要重新給 constructor 賦值,以保證物件例項的型別不被篡改。

instanceof 是用來判斷 a 是否為 b 的例項,表示式為:a instanceof b,如果 a 是 b 的例項,則返回 true,否則返回 false。 在這裡需要特別注意的是:instanceof 檢測的是原型,

由上圖可以看出的原型指向array.prototype,間接指向object.prototype, 因此 instanceof array 返回true, instanceof object 也返回true。

instanceof 只能用來判斷兩個物件是否屬於例項關係, 而不能判斷乙個物件例項具體屬於哪種型別。

判斷JS資料型別的方法

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

js資料型別的判斷方法

判斷js中的資料型別有一下幾種方法 typeof instanceof constructor prototype type jquery.type 接下來主要比較一下這幾種方法的異同。var a iamstring.var b 222 var c 1,2,3 var d new date var ...

js中的資料型別及判斷方法

ecmascirpt 變數有兩種不同的資料型別 基本型別,引用型別。boolean null undefined number string symbol ecmascript 6 新定義 object 物件型別涵蓋了很多引用型別,任何非基本型別的都是物件型別。如function array dat...