1、检测原始值:typeof
2、检测引用值:
内置的引用类型为:Object、Array、Date、Error
使用instanceof检测
对于函数和数组来说,都不用instanceof方式检测
3、检测函数
typeof
例如:typeof myFunc === "function"
在IE8以及更早版本的浏览器中,应该使用in来判断。例如:
“querySelectorAll” in document
4、检测数组:
使用duck typing:
function isArray(value){
return typeof value.sort === "function";
}
目前很多类库使用的方法是:
function isArray(value){
if(typeof Array.isArray === 'function'){
Array.isArray(value);
}else{
return Object.prototype.toString.call(value) === '[object Array]';
}
}
目前,IE9以及以上浏览器等浏览器都已经实现了Array.isArray()方法。
5、检测属性
另外一种用到null以及undefined的场景是当检测一个属性是否在对象中存在时。
判断属性是否存在的最好办法是使用in运算符。in运算符仅仅会简单地判断属性是否存在,而不会去读取属性的值。
如果只想检查实例对象的某个属性是否存在,则使用hasOwnProperty()方法。但是这种方法在IE8以及更低版本中是无效的。