Object.prototype.toString.call 费解的地方

看第一条结果,为啥不是[object Object]费解,求大神解释

 <script>
    var name = {sex: '女'};
    var name2 = {a: 1};
    console.log(Object.prototype.toString.call(name)); // [object String] 按理说这里应该也是[object Object],可以使为啥不是呢?
    console.log(Object.prototype.toString.call({sex: '女'})); // [object Object]

    console.log(Object.prototype.toString.call(name2)); // [object Object]
    console.log(Object.prototype.toString.call({a: 1})); // [object Object]

</script>

3个回答

如果是string类型,那么toString由特例,是调用的string.toString而不是object.toString,直接返回string,所以object String

qiangD
qiangD 非常谢谢啊,找到原因了,在window对象全局环境中有个属性就是name window.name 始终是string类型的,换个名字的话,就可以了
2 年多之前 回复
(function{
      var name = {sex: '女'};
    var name2 = {a: 1};
    console.log(Object.prototype.toString.call(name)); // [object String] 按理说这里应该也是[object Object],可以使为啥不是呢?
    console.log(Object.prototype.toString.call({sex: '女'})); // [object Object]

    console.log(Object.prototype.toString.call(name2)); // [object Object]
    console.log(Object.prototype.toString.call({a: 1})); // [object Object]

})();
 (function(){
      var name = {sex: '女'};
    var name2 = {a: 1};
    console.log(Object.prototype.toString.call(name)); // [object String] 按理说这里应该也是[object Object],可以使为啥不是呢?
    console.log(Object.prototype.toString.call({sex: '女'})); // [object Object]

    console.log(Object.prototype.toString.call(name2)); // [object Object]
    console.log(Object.prototype.toString.call({a: 1})); // [object Object]

})();
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问