为什么两种结果不一样??
Object.prototype.toString.call([]) // [object Array] [].toString() // ''
array toString() 是join(‘,’);
因为this指向不一样
第一个的this指向的是 Array 都二个指向的是String,相当于 []+’’ = ‘’
要是我说错了,请指正。
第一个调用的是Object.prototype.toString 第二个调用的是Array.prototype.toString 调用的方法不一样,结果自然不一样
楼上在理,array对象虽然继承自object ,但是它有自己的tostring方法,Object.prototype.toString 会获取this对象的[[Class]]属性的值 组成[object array]返回,Array.prototype.toString 调用时如果this对象是数组会调用自己的tostring 即join,不是数组的话,就调用Object.prototype.toString。
[].toString调用的是Array.prototype.toString,已经重写了Object.prototype.toString。
http://aralic.github.io/2015/05/01/js类型检测/ 楼主看看这个 以前我也和你一样有这个疑惑。
谢谢大家。我已经明白啦。