把一个对象({})转成字符串,会调用对象的toString方法,在不重写toString方法的情况下情况下会返回[object Object]例如,想在浏览器中alert一个Object实例,在默认情况下,这个对象会调用自身的toString()方法,转成字符串后alert显示,最后显示的结果就是[object Object]。如果想查看对象内部的具体情况,可以使用JSON.stringify()将对象转换成字符串输出,或者使用console.log()在控制台直接输出,或者使用for...in对对象属性进行枚举显示。

1
2
3
4
5
var obj = {name:"mengfansheng", age:26};
obj.toString();//"[object Object]"

var arr = [1,2,3];
Object.prototype.toString.call(arr);//"[object Array]"

针对以上知识,看下面一个题目:

({}) == '[object Object]' //true

首先,上面的表达式在进行比较时会进行类型转化,这部分可以看这里这里,一个对象转换成字符串调用自身的toString方法,由于在不重写的toString方法的情况下该方法的返回值是'[object Object]',所以说,这题最后比较的就是'[object Object] == [object Object]',所以比较的结果就是true