目前最精确的判定方法(不包括自定义类型)
1.var adalah = fungsi (obj, tipe) {
2.
var _toString = Objek.prototipe.toString,tidak terdefinisi;
3.
kembali (ketik === "Null" && obj === null) ||
4.
(ketik === "Tidak terdefinisi" && obj === tidak terdefinisi ) ||
5.
_toString.call(obj).slice(8,-1) === ketik;
6.};
用法如下:
01.//***************示例一,判定数组与函数
02.
var forEach = fungsi(array,fn,bind){
03.
if(is(array,"Array") && is(Array.forEach,"Function")){
04.
array.forEach(fn,bind);
05.
}kalau tidak{
06.
for(var i=0,n=array.panjang;i<n;i++){
07.
saya dalam larik && fn.call(bind,array[i],i,array)
08.
}
09.
}
10.
}
11.//***************示例二,判定null
12.var a = nol
13.alert(is(a,"Null"))
14.//***************示例二,判定tidak terdefinisi
15.varb
16.alert(is(b,"Tidak terdefinisi"))
另一个变种,直接返回表示类型的字符串
1.var getType = fungsi (obj) {
2.
var _toString = Objek.prototipe.toString,tidak terdefinisi;
3.
kembalikan objek === nol? "Batal":
4.
obj === tidak terdefinisi? "Belum diartikan":
5.
_toString.call(obj).slice(8,-1);
6.};
arti:
01.var arr = [1,2,3,4]
02.
peringatan(getType(arr));//Array
03.
var nihil = nol
04.
peringatan(getType(nihil))//Null
05.
var dan ;
06.
alert(getType(und))//Tidak terdefinisi
07.
var spans = document.getElementsByTagName("span");
08.
alert(getType(spans)) //HTMLCollection
09.
alert(getType(spans[0].childNodes))//NodeList