現在の最も精緻な判定方法(自己定義型は含まない)
1.var is = function (obj, type) {
2.
var _toString = Object.prototype.toString,未定義;
3.
return (type === "Null" && obj === null) ||
4.
(タイプ === "未定義" && obj === 未定義 ) ||
5.
_toString.call(obj).slice(8,-1) === タイプ;
6.};
用法例:
01.//***************例一、判定数群与関数数
02.
var forEach = function(array,fn,bind){
03.
if(is(配列,"配列") && is(配列.forEach,"関数")){
04.
array.forEach(fn,bind);
05.
}それ以外{
06.
for(var i=0,n=array.length;i<n;i++){
07.
配列内の 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 = null
04.
alert(getType(nil))//Null
05.
変数と;
06.
alert(getType(und))//未定義
07.
varspans = document.getElementsByTagName("span");
08.
alert(getType(spans)) //HTMLCollection
09.
alert(getType(spans[0].childNodes))//NodeList