上次笔试遇到一个题目:
var a = {}; var b = {key:'b'}; var c = {key:'c'}; a[b] = 123; a[c] = 456; console.log(a[b]);
这里涉及到Object.prototype.toString.call()
原因是b是个对象,不能作为属性。这里要强制转换为String
Object.prototype.toString.call(b); //"[object Object]" 相当于 a["[object Object]"] = 123, a["[object Object]"] = 456
扩展:
d=['1']; a[d]=777; e=[]; a[e]=888; f = [2,3]; a[f] = 999; //a: Object {1: 777, [object Object]: 456, "": 888, 2,3: 999} 其中:a["2,3"] = 999
Object.prototype.toString.call()几乎是判断一个数据类型的最标准的方法。
比如:
typeof null //结果是 object
我们此时使用:
Object.prototype.toString.call(null) //结果是:"[object Null]"