第22章 高级技巧
22.1 高级函数
22.1.1 安全的类型检测
var isArray = value instanceof Array;
以上代码要返回 true,value 必须是一个数组,而且还必须与 Array 构造函数在同个全局作用域中。如果 vaule 是在另个框架中定义的数组,那么以上代码就会返回 false。
原生数组的构造函数名与全局作用域无关,因此使用 toString() 就能保证返回一致的值。
function isArray(value) {
return Object.prototype.toString.call(value) == "[object Array]";
}
同样,基于以上思路测试某个值是不是原生函数或正则表达式。
function isFunction(value) {
return Object.prototype.toString.call(value) == "[object Function]";
}
function isRegExp(value) {
return Object.prototype.toString.call(value) == "[object RegExp]";
}
检测原生 JSON 对象。
var isNativeJSON = window.JSON && Object.prototype.toString.call(JSON) == "[object JSON]";