目前最精确的判定方法(不包括自定义类型)
1.var คือ = ฟังก์ชั่น (obj, ประเภท) {
2.
var _toString = Object.prototype.toString,ไม่ได้กำหนด;
3.
return (ประเภท === "Null" && obj === null) ||
4.
(ประเภท === "ไม่ได้กำหนด" && obj === ไม่ได้กำหนด ) ||
5.
_toString.call(obj).slice(8,-1) === ประเภท;
6.};
用法如下:
01.//***************示例一,判定数组与函数
02.
var forEach = ฟังก์ชั่น (อาร์เรย์, fn, ผูก) {
03.
if(is(array,"Array") && is(Array.forEach,"Function")){
04.
array.forEach(fn,ผูก);
05.
}อื่น{
06.
สำหรับ(var i=0,n=array.length;i<n;i++){
07.
ฉันอยู่ในอาร์เรย์ && fn.call(bind,array[i],i,array)
08.
-
09.
-
10.
-
11.//***************示例二,判定null
12.var a = โมฆะ
13.alert(เป็น(a,"Null"))
14.//***************示例二,判定unknown
15.var ข
16.alert(คือ(b,"ไม่ได้กำหนด"))
另一个变种,直接返回表示类型的字符串
1.var getType = ฟังก์ชั่น (obj) {
2.
var _toString = Object.prototype.toString,ไม่ได้กำหนด;
3.
กลับ obj === null? "โมฆะ":
4.
obj === ไม่ได้กำหนด ? "ไม่ได้กำหนด":
5.
_toString.call(obj).slice(8,-1);
6.};
用法:
01.var arr = [1,2,3,4]
02.
alert(getType(arr));//Array
03.
var nil = null
04.
alert(getType(ไม่มี))//Null
05.
var และ ;
06.
alert(getType(und))//ไม่ได้กำหนด
07.
var spans = document.getElementsByTagName("span");
08.
alert(getType(spans)) //HTMLCollection
09.
การแจ้งเตือน (getType (ช่วง [0] .childNodes)) // NodeList