js型別判斷

2022-07-14 13:36:22 字數 2048 閱讀 4024

let class2type = {}

let datatype = ['boolean', 'number', 'string', 'function',

'array', 'date', 'regexp', 'object', 'error'

]datatype.foreach((name, i) => )

// 型別判斷

function type(obj)

return typeof obj === 'object' || typeof obj === 'function' ?

class2type[class2type.tostring.call(obj)] || 'object' :

typeof obj;

}// 判斷是不是函式

function isfunction(obj)

// 判斷是不是陣列

function isarray(obj)

return type(obj) === 'array'

}// 判斷是不是window物件

function iswindow(obj)

// 判斷是不是類陣列

function isarraylike(obj)

判斷是否是陣列,又新的原生方法array.isarray, 這裡相容了低版本瀏覽器

window物件有乙個window屬性, 這個屬性指向window本身,即window.window === window

型別判斷使用typeof是不可靠的,

value               class      type

-------------------------------------

"foo" string string

new string("foo") string object

1.2 number number

new number(1.2) number object

true boolean boolean

new boolean(true) boolean object

new date() date object

new error() error object

[1,2,3] array object

new array(1, 2, 3) array object

new function("") function function

/abc/g regexp object (function in nitro/v8)

new regexp("meow") regexp object (function in nitro/v8)

{} object object

new object() object object

為了判斷出型別,可以使用object.prototype.tostring方法獲取物件的[[class]]值,

object.prototype.tostring.call()    // "[object array]"

object.prototype.tostring.call({}) // "[object object]"

object.prototype.tostring.call(2) // "[object number]"

這樣還不夠,還需要單獨處理nullundefined

js型別判斷

typeoftypeof 返回值有七種可能 number,string,boolean,object,function,undefined,symbol 侷限性 對於array,null等特殊物件使用typeof一律返回object。numbers typeof 37 number typeof m...

js型別判斷

js型別判斷,有如下三種 1 typeof 2 instanceof 3 object.prototype.tostring.call 4 arg.proto contructor.name 以判斷陣列為例,有如下幾種方法 function isarray arg return arg instan...

判斷JS型別

一 js的型別 js的基本型別共有七種 bigint bigint是一種內建物件,是處symbol外的第二個內建型別 number string boolen symbol undefined null。複雜資料型別有物件 object 包括基本的物件 函式 function 陣列 array 和內...