toString方法 - Azurehuihui/LearnJS GitHub Wiki
toString方法是Object原型上的方法,所以对象都可以使用,但Object中的toString方法与其他类型的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'}
之所以会出现上述的现象是因为,当我们将一个对象作为另一个对象的key值时, 默认会自动转换key值所对应的对象,即自动会执行 toString方法
a.toString(); //[Object,Object]
b.toString(); //[Object,Object]
c[a]会打印出two,是因为所以对象作为key值,他真正的key值都是 [Object,Object], 所以c[b]就复写了c[a]的值。
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()方法都是把当前的数据类型转换为字符串的类型;
// 注意,数字类型,不能直接用字面量去 .toString()
1.toString() // Uncaught SyntaxError: Invalid or unexpected token
(1).toString() // "1" js 解析器把 . 解析了 1.toString() 相当于 (1.)toString()报错了
a = 1
a.toString() // "1"
"2".toString() // "2"
true.toString() // "true"
[1,2,3].toString() // "1,2,3"
f = function (){}
f.toString() // "function (){}"
h = new Date()
h.toString() // "Fri May 07 2021 09:05:43 GMT+0800 (GMT+08:00)"