1.typeof
typeof用于判断值的数据类型
举例:
console.log(typeof null)//object
typeof null 的值为object,typeof不能区分null和object
2.instanceof
instanceof用于判断某对象是否存在于目标对象的原型链上
举例:
function Fun() { }
let f1 = new Fun();
//判断Fun是否在f1的原型链上
console.log(f1 instanceof Fun);// true
实际上是f1的原型链__proto__和Fun构造函数的原型对象prototype相等。
3.constructor
let date = new Date();
console.log(date.constructor.name)// Date
4.Object.prototype.toString.call()
console.log(Object.prototype.toString.call(123)); // "[object Number]"
最常用的类型检测方式,能检测所有的数据类型。
Object.prototype是object原型对象,它上面有一个方法tostring(),将检测出的类型转成字符串。call()方法用于改变this的指向,让this指向我们检测的数据123。