判斷JS數據類型的方法

在ECMAScript中,共定義了7種數據類型,分爲基本類型和引用類型,以下所示:數組

基本類型:String、Number、Boolean、Symbol、Undefined、Null
引用類型:Object
基本類型也稱爲簡單類型,因爲其佔據空間固定,是簡單的數據段,爲了便於提高變量查詢速度,將其存儲在棧中,即按值訪問。
引用類型也稱爲複雜類型,因爲其值的大小會改變,因此不能將其存儲在棧中,不然會下降變量查詢速度,所以,將其存儲在堆中,而存儲在變量處的值是一個指針,指向存儲對象的內存處,即按址訪問。引用類型除Object外,還有Array、Function、Date、RegExp等。app

1、typeof

typeof是一個操做符,其右側跟一個一元表達式,並返回這個表達式的數據類型。返回的結果包括如下7種類型:Number、String、Boolean、Symbol、Undefined、Object、Function函數

typeof返回的值大體歸爲:spa

  • 對於基本類型,除null外一概返回正常類型
  • 對於引用類型,除function外,一概返回object
  • Null返回object類型
  • Function返回function類型

其中,null有屬於本身的數據類型null,引用類型中的數組、日期、正則也有屬於本身的數據類型,而typeof對於這些類型的處理,只返回了處於其原型鏈最頂端的Object類型。prototype

2、Instanceof

Instanceof用來判斷A是不是B的實例,表達式爲:A instanceof B,若是A是B的實例,則返回true,不然,返回false。3d

圖片描述

圖片描述

圖片描述

3、Constructor

當一個函數F被定義時,JS引擎會爲F添加一個prototype原型,而後再在prototype上添加constructor屬性,並讓其指向F的引用。指針

圖片描述

4、Object.prototype.toString()

圖片描述

toString是Object的原型方法。對於Object對象,直接調用toString()對於其餘對象,則須要經過call/apply來返回正確的類型信息。對象

相關文章
相關標籤/搜索