关于Object.prototype.toString.call()

 上次笔试遇到一个题目:

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]"
原文地址:https://www.cnblogs.com/miaodi/p/6749941.html