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]"
這樣還不夠,還需要單獨處理null
和undefined
。 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 和內...