目前最精确의 기본 결정 방법(不包括自組义类型)
1.var is = 함수(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,"배열") && is(Array.forEach,"함수")){
04.
array.forEach(fn,bind);
05.
}또 다른{
06.
for(var i=0,n=array.length;i
i 배열 && fn.call(bind,array[i],i,array)
08.
}
09.
}
10.
}
11.//*****************示例이,判결정null
12.var a = null
13.alert(is(a,"Null"))
14.//****************示例이, 判정미정의
15.var b
16.alert(is(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));//배열
03.
var nil = 널
04.
경고(getType(nil))//Null
05.
var 및 ;
06.
경고(getType(und))//정의되지 않음
07.
var 스팬 = document.getElementsByTagName("스팬");
08.
Alert(getType(spans)) //HTMLCollection
09.
Alert(getType(spans[0].childNodes))//NodeList