Object.prototype.toString.call(obj)的理解
常用的确认变量类型的几种方法中用的较多的有typeof、instanceof、以及Object.prototype.toString.call(obj),而其中适用性最强的是Object.prototype.toString.call(obj),然而一直以来对于这个方法都没有深入的理解过,今天仔细研究了下,做个记录
对于toString()方法以往的认知都是用于返回数组、对象等的字符串表示,突然能够用于确认变量数据类型了?一脸懵逼
研究了下发现此toString非彼toString,Object上有两个toString方法,一个在Object本身,另一个存在与Object.prototype原型上,分别尝试使用之后发现如下
console.log(Object.toString())
console.log(Object.prototype.toString())
在Object本身上的输出的是函数体
而在Object.prototype上输出的是数据类型
因此我们能够知道,Object.prototype上的toString()方法具有判断数据类型的功能,而Object本身继承了原型上的方法后对其进行了重写
结论:只有Object.prototype上的toString具有判断数据类型的功能,因此我们使用其判断数据类型需要使用call方法改变this指向
就酱