JS 8种数据类型判断方式
1.typeof
- null(object)
- NaN(number)
- ducument.all(undefined)
注意:暂时性死区(ES6)
function log(){
typeof a
let a = 10
}
log();// ReferenceError ReferenceError: Cannot access 'a' before initialization
2.constructor,指向创建实例对象的构造函数
- null
- undefined
- 可以被改写
3.instanceof,原型链查找
- 右操作数必须是函数或者class
- 跨窗口注意
4.isPrototypeOf
- 是否出现在实例对象原型链上
- 比instanceof更安全
5.Object.prototype.toString
通过函数动态的this特性,返回去数据类型'[object Date]'
6.鸭子类型检测(候选方案)
检查自身,属性的类型或者执行结果的类型
7.Symbol.toSringTag
Object.prototype.toString会读取该值
- 需要自定义类型
- 兼容性(ES6)
class MyArray{
get [Symbol.toStringTag](){
return "MyArray"
}
}
var pf = console.log
var a = new MyArray();
pf(Object.prototype.toString.call(a)) //[object MyArray]
8.等比较
与某个固定值进行比较
- undefined,window,document,null等
isUndefined = function(obj){
return obj === void 0
}
//void 返回的是undefined

浙公网安备 33010602011771号