问题:
Object.prototype.toString.call() 与 对象.toString() 的区别?
分析:
- 新建一个数组对象 i
var i = [{a:1,b:2}]
- 对象.toString() 控制台输出
i.toString() // 打印 "[object Object]"
- Object.prototype.toString.call() 控制台输出
Object.prototype.toString.call(i) //打印 "[object Array]"
从这里我们就可以看出,用 Object.prototype原型对象 能够精确转换出对象类型。
通过这个特点,我们就可以在项目中用它来检测对象的类型。
知识点:
Object.prototype
属性表示Object
的原型对象。
使用
toString()
检测对象类型可以通过
toString()
来获取每个对象的类型。为了每个对象都能通过Object.prototype.toString()
来检测,需要以Function.prototype.call()
或者Function.prototype.apply()
的形式来调用,传递要检查的对象作为第一个参数,称为thisArg
。
参考资料: