JavaScript判断变量类型的四种方法
typeof(根据二进制判断):
常用于判断基础数据类型,对于引用数据类型除了function 返回 ‘function’,其余都返回 ‘object’ (typeof null === object)
instanceof:
主要用于区分引用数据类型,检测构造函数的 prototype 属性是否出现在某个实例对象的 原型链 上
语法:object(某个实例对象) instenceof constructor(构造函数)
不适用于简单数据类型的检测,检测过程繁琐且无法检测简单数据类型中的 undefined、null、symbol
Object.prototype.toString.call():
适用于所有的类型检测,且检测精准
语法:Object.prototype.toString.call(数据) ;返回的是该数据类型的字符串。
原理:Object.prototype.toString 表示一个返回对象类型的字符串,不同的数据对toString进行了一个重写,call() 方法可以改变this的指向,
把Object.prototype.toString方法指向不同的数据类型上, 返回不同的结果
constructor(用于引用数据类型):
用于检测引用数据类型,检测方法是获取实例的构造函数,判断和某个类是否相同,如果相同就说明该数据是符合那个数据类型的
这种方法不会把原型链上的其他类也加入进来,避免了原型链的干扰
引用:https://www.nowcoder.com/exam/interview/detail?questionClassifyId=0&questionId=2412354&questionJobId=156&type=1