为什么Object.prototype.toString.call()可以准确判断对象类型

384 阅读1分钟
  • toString()方法,返回对象的字符串表现
  • Array,function等类型作为Object的实例,都各自重写了toString()方法
  • 要得到对象的具体类型,需要调用Object的原型的未被重写的toString方法
  • delete操作符用于删除对象的某个属性
  • hasOwnProperty()方法会返回一个布尔值,提示对象自身属性中是否具有指定的属性
function fn(){}
let arr=[1,2,3]
delete Array.prototype.toString
arr.hasOwnProperty(toString)
//false
arr.toString()
//'[object Array]'
Object.prototype.toString()
//'[object Object]'

call是改变this指向