javascript中的toString方法
看一道面试题
var a = {};
var b = {'name':'wahaha'};
var c = {};
c[a] = 'one';
c[b] = 'two';
console.log(c[a]); //two
console.log(c); //{[Object,Object]:'two'}
之所以出现这个结果,是因为当我们使用一个对象作为,c对象的key值时,默认自动转换key值所对应的对象。
a.toString();//[Object,Object]
b.toString();//[Object,Object]
c[b]的值会复写c[a]的值,所以c[a]为two。
**Object.toString() : ** 返回 “[Object type]”,type 是对象的类型。
Object.prototype.toString.call(''); //[object String]
Object.prototype.toString.call(1); //[object Number]
Object.prototype.toString.call(true); //[object Boolean]
Object.prototype.toString.call([]); //[object Array]
Object.prototype.toString.call({}); //[object Object]
Object.prototype.toString.call(undefined); //[object Undefined]
Object.prototype.toString.call(null); //[object Null]
Object.prototype.toString.call(new Function()); //[object Function]
Object.prototype.toString.call(new Date()); //[object Date]
Object.prototype.toString.call(new RegExp()); //[object RegExp]
Object.prototype.toString.call(new Error()); //[object Error]
Object.prototype.toString.call(document); //[object HTMLDocument]
Object.prototype.toString.call(window); //[object Window]
注意:
对于Number、String,Boolean,Array,RegExp、Date、Function原型上的toString方法,重写了Object.toString()方法。
这些对象上的toString()方法都是把当前的数据类型转换为字符串的类型;
参考:
MDN