Object.prototype.toString.call()
javascript 利用typeof 判断数据类型,如下图
但是我们发现:当数据类型是数组、null 时,得到的结果也是object,导致不能很好的区分。
jQuery利用toString.call(obj)的方式来判断数据的类型。
注意上图中的null 和 undefined 类型都是"[object Window]",所以要判断
1 function isType(obj){ 2 var class2type = {}, 3 temptype = "Boolean Number String Function Array Date RegExp Object".split(" "); 4 for(var i = 0;i < temptype.length;i++){ 5 class2type['[object '+ temptype[i]+']'] = temptype[i].toString().toLowerCase(); 6 } 7 //console.log(class2type) 8 9 return obj == null ? String(obj) : class2type[toString.call(obj)] || 'object'; 10 }
jQuery利用一个小技巧 obj == null 巧妙的区分开了 null 和 undefined,因为 null == null 和undefined == null 都是true。