js資料型別判斷

2021-10-07 16:11:26 字數 4330 閱讀 7115

一)js資料型別種類

基本資料型別:string、number、null、boolean、undefined共五大類,資料大小確定,儲存在計算機棧記憶體中。

二)js資料型別檢測方式

主要有typeof、instanceof、constructor、object.prototype.tostring()四種。

typeof檢測8大資料型別,null和array都被檢測成了object,其它都正常。

console.

log(

typeof1)

//number

console.

log(

typeof

'a')

//string

console.

log(

typeof

true

)//boolean

console.

log(

typeof undefined)

//undefined

console.

log(

typeof

null

)//object

console.

log(

typeof

)//object

console.

log(

typeof

function()

)//function

console.

log(

typeof

)//object

instanceof(例項),只能檢測引用型別(陣列,物件,函式),檢測引用型別a是否是b的例項,通過原型鏈檢測引用例項的建構函式。

console.

log(

1instanceof

number

)//false

console.

log(

'a'instanceof

string

)//false

console.

log(

true

instanceof

boolean

)//false

// console.log( undefined instanceof undefined) // 異常

// console.log( null instanceof null) // 異常

console.

log(

instanceof

array

)//true

console.

log(

function()

instanceof

function

)//true

console.

log(

instanceof

object

)//true

// 這就是instanceof實現原理,通過原型鏈檢測引用例項的建構函式

// a引用例項,b建構函式

function

instance

(a,b)

}

constructor(建構函式)檢測資料的建構函式,物件的constructor指向建立該物件的函式,也就是建構函式

這裡首先講下constructor的用法:

console.

log(

''.constructor === string)

// true

console.

log((1

).constructor === number)

// true

// console.log((null).constructor === null) // 異常

// console.log(undefinde.constructor === undefined) // 異常

console.

log(

.constructor === array)

// true

console.

log(

.constructor === object)

// true

console.

log(

(function()

).constructor === function)

// true

function

cat()}

const cat =

newcat()

// 物件的constructor指向建立該物件的函式,也就是建構函式

console.

log(cat.constructor === cat)

// true

console.

log(cat.__proto__ === cat.prototype)

console.

log(cat.__proto__.constructor === cat)

// true

// 函式的原型物件的constructor指向函式本身

console.

log(cat.prototype.constructor === cat)

// true

比喻我們在引用乙個建構函式的例項時,我們想對其建構函式進行改造,這時constructor就有用了,我們可以通過例項的constructor找到其建構函式,然後在建構函式的原型物件上新增一些新的屬性和方法。

function

cat(

)const cat =

newcat()

// 在建構函式cat上新增age屬性,並賦值22

cat.constructor.prototype.age =

22 cat.constructor.prototype.

say=

function()

const cat1 =

newcat()

console.

log(cat1.age)

// 22

cat1.

say(

)// my name is coco, and age is 22

// constructor.length構造函式引數個數

console.

log(cat1.constructor.length)

// 0

object.prototype.tostring()

tostring()是object原型prototype的乙個方法,預設返回物件的[object,xx]

console.

log(object.prototype.

tostring()

)// [object object]

console.

log(object.prototype.tostring.

call

(null))

// [object null]

console.

log(object.prototype.tostring.

call

(undefined)

)// [object undefined]

console.

log(object.prototype.tostring.

call(''

))// [object object]

console.

log(object.prototype.tostring.

call(1

))// [object number]

console.

log(object.prototype.tostring.

call

(true))

// [object boolean]

console.

log(object.prototype.

tostring()

)// [object object]

console.

log(object.prototype.tostring.

call([

]))// [object array]

console.

log(object.prototype.tostring.

call

(function()

))// [object object]

js判斷資料型別

1 typeof 形如 var x xx typeof x string 返回型別有 undefined string number boolean function object 缺點 對於object型別不能細分是什麼型別 優點 對空null的判斷 undefined 的應用 2 instanc...

js判斷資料型別

了解js的都知道,有個typeof 用來判斷各種資料型別,有兩種寫法 typeof typeof 如下例項 typeof 2 輸出 number typeof null 輸出 object typeof 輸出 object typeof 輸出 object typeof function 輸出 fu...

js判斷資料型別

1 判斷是否為陣列型別 2 判斷是否為字串型別 3 判斷是否為數值型別 isnan 變數 如果為true就是數字型別 注意這個函式一般針對數字型別來判斷是否值為nan,若變數為非數字型別,則先轉化為數字型別再做判斷,用此函式時,別忘考慮空串和空格 這倆轉化為數字是0 4 判斷是否為日期型別 5 判斷...