JS型別判斷的四種方法

2021-10-07 12:24:00 字數 1623 閱讀 8545

1.typeof

typeof是乙個操作符,其右側跟乙個一元表示式,並返回這個表示式的資料型別。返回的結果用該型別的字串(全小寫字母)形式表示,包括number,string,boolean,undefined,object,function,symbol等。

複製**

typeof 「」; //string

typeof 1; //number

typeof false; //boolean

typeof undefined; //undefined

typeof function(){}; //function

typeof {}; //object

typeof symbol(); //symbol

typeof null; //object

typeof ; //object

typeof new date(); //object

typeof new regexp(); //object

複製**

2.instanceof

instanceof用來判斷a是否為b的例項,表示式為:a instanceof b,如果a是b的例項,則返回true,否則返回false。instanceof檢測的是原型,內部機制是通過判斷物件的原型鏈中是否有型別的原型。

{} instanceof object; //true

instanceof array; //true

instanceof object; //true

「123」 instanceof string; //false

new string(123) instanceof string; //true

我們可以用下面的**實現instanceof。

複製**

function instance(left,right)

if (proto === prototype)

proto = proto.proto;}}

console.log(instance({},object)); //true

console.log(instance(,number)); //false

複製**

3.constructor

當乙個函式f被定義時,js引擎會為f新增prototype原型,然後在prototype上新增乙個constructor屬性,並讓其指向f的引用,利用原型物件的constructor屬性引用了自身,當f作為建構函式建立物件時,原型上的constructor屬性被遺傳到了新建立的物件上,從原型鏈角度講,建構函式f就是新物件的型別。這樣做的意義是,讓物件誕生以後,就具有可追溯的資料型別。

4.object.prototype.tostring()

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

封裝乙個準確判斷資料型別的函式

複製**

function gettype(obj)

return object.prototype.tostring.call(obj).replace(/^[object (\s+)]$/, 『$1』);

}

js的資料型別以及判斷型別的四種方法

四種判斷型別的方法 null 表示定義為空 undefined 表示未定義 string 字串 number 特殊的兩個符號 nan和infinity isnan 判斷乙個數是否為無窮大,nan和任何數都不相等,包括它本身。parseint p1,p2 p1為字串,如果不是則轉換為字串後再進行處理。...

判斷資料型別的四種方法

typeof typeof 一般用於判斷基本型別null除外,typeof也可以判斷function 但判斷array,error,null 這幾個引用型別時對會被typeof判斷為object,所以如果想判斷這幾種資料型別,就不能使用 typeof 了,比較有侷限性 instanceof inst...

判斷js資料型別的四種方法和原理

怎麼去判斷乙個資料屬於哪個資料型別,這個是很常見的操作,我們一般都會想到typeof和instanceof這兩個常見的方法,但有時候這兩種方法並不能滿足我們的需求。那讓我們來看一下都有哪些可以判斷資料型別的方法吧。1.typeof 這個方法很常見,一般用來判斷基本資料型別,如 string,numb...