Object.prototype.toString.call(value)
这不是toString方法吗,转成字符串吗?
其实toString()是object原型上的方法,所有引用类型都能继承它,它返回的是"[object type]",type为object对象类型。
既然引用类型都有这个方法,为什么返回的形式并不都是"[object type]"呢?再来看看mdn
发现大部分重写了toString()方法,也就是说比如数组的原型链有两个toString方法,那么就会继承原型链上离自己最近的方法,所以数组的toString()是转成字符串。要想调用object原型链上的toString(),可以改变this的指向:Object.prototype.toString.call(value)
instanceof :运算符用于某个实例对象的原型链上是否存构造函数的 prototype 属性
typeof : 判断数据类型
这两种方法在判断数据的精确类型上都不准确,如果只是需要判断基本数据类型,typeof就足够。