JS类型检查
1、typeof 能识别哪些数据类型
number、string、boolean、undefined、function
2、typeof 不能识别的数据类型可以用什么方法识别(说出其原理)
例如:
p1.proto === P.prototype 为true就代表是它的实例
instanceof 运算符用于测试构造函数的 prototype 属性是否出现在对象原型链中的任何位置
3、 一种万能数据类型检测方式(及其原理)
Object.prototype.toString
为什么需要Object.prototype.toString?
Object对象本身就有一个toString()方法,返回的是当前对象的字符串形式,原型上的toString()返回的才是我们真正需要的包含对象数据类型的字符串。
若参数不为 null 或 undefined,则将参数转为对象,转为对象后,取得该对象的 [Symbol.toStringTag] 属性值(可能会遍历原型链)作为 tag,如无该属性,或该属性值不为字符串类型,则依下表取得 tag, 然后返回 "[object " + tag + “]” 形式的字符串。例如检测对象会返回:[object object]