检测一个对象是否存在:
if (typeof myObj === 'undefined') {
var myObj = {};
}
可用于检测对象类型的运算符:
- typeof
主要对基础数据类型的判断,对引用类型都会返回object - instanceof
左边的运算符必须是一个对象,右边的晕算数是对象类的名字或者构造函数 - 对象的constructor属性
每个对象都有constructor属性,起引用了该对象的构造函数
function isArray (arr) {
return arr instanceof Array;
}
也可以通过
function isArray (arr) {
return typeof arr === 'object' && arr.constructor === Array;
}
但是instanceof在某些IE版本中无效,且同一个页面中的不同框架(ifame)不共享prototype,所以最佳实践是:
if (typeof Array.isArray === 'undefined') {
Array.isArray = function (arr) {
return Object.prototpe.toString.call(arr) === '[object Array]'
}
}
一个用于获取对象类型名的通用函数:
function __getClass (object) {
return Object.prototype.toString.call(object).match(/^\[object\s(.*)\]&/)[1];
}
通过拓展,可以编写一个检测的函数:
function is (type, object) {
return type === __getClass(object);
}