目前最精确的判定方法(不包括自定义类型)
1.var is = функция (объект, тип) {
2.
вар _toString = Object.prototype.toString, не определено;
3.
return (type === "Null" && obj === null) ||
4.
(тип === "Неопределено" && obj === неопределенное ) ||
5.
_toString.call(obj).slice(8,-1) === тип;
6.};
用法如下:
01.//***************示例一,判定数组与函数
02.
вар forEach = функция (массив, fn, привязка) {
03.
if(is(array,"Array") && is(Array.forEach,"Function")){
04.
array.forEach(fn,bind);
05.
}еще{
06.
for(var i=0,n=array.length;i<n;i++){
07.
я в массиве && fn.call(bind,array[i],i,array)
08.
}
09.
}
10.
}
11.//***************示例二,判定null
12.вар а = ноль
13.alert(is(a,"Null"))
14.//***************示例二,判定не определено
15.вар б
16.alert(is(b,"Не определено"))
另一个变种,直接返回表示类型的字符串
1.var getType = функция (obj) {
2.
вар _toString = Object.prototype.toString, не определено;
3.
вернуть объект === ноль? "Нулевой":
4.
объект === не определено? "Неопределенный":
5.
_toString.call(obj).slice(8,-1);
6.};
Источник:
01.var обр = [1,2,3,4]
02.
alert(getType(arr));//Массив
03.
вар ноль = ноль
04.
alert(getType(nil))//Null
05.
вар и ;
06.
alert(getType(und))//Не определено
07.
var spans = document.getElementsByTagName("span");
08.
alert(getType(spans)) //HTMLCollection
09.
alert(getType(spans[0].childNodes))//NodeList