返回資料型別,包含這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...