'js中的valueOf和toString'

简介

valueOf():返回最适合该对象类型的原始值;
toString(): 将该对象的原始值以字符串形式返回。
这两个方法一般是交由JS去隐式调用,以满足不同的运算情况。
在数值运算里,会优先调用valueOf(),如a + b;
在字符串运算里,会优先调用toString(),如alert(c)。
原始值就是 Number、String和Boolean三种类型。

样例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
var a = 1;
var b = 'b';
var c = true;

var d = [1,2,3]
var e = ['1','2','3']
var f = ['a','b','c']
var g = ['a','b',3]

var h = {
ha :'a',
hb : function(){
console.log('ss')
}
}


console.log(a,b,c,d,e,f,g,h)
console.log(a.toString(),b.toString(),c.toString(),d.toString(),e.toString(),f.toString(),g.toString(),h.toString())
console.log(a.valueOf(),b.valueOf(),c.valueOf(),d.valueOf(),e.valueOf(),f.valueOf(),g.valueOf(),h.valueOf())

结果:

1
2
3
1 'b' true [ 1, 2, 3 ] [ '1', '2', '3' ] [ 'a', 'b', 'c' ] [ 'a', 'b', 3 ] { ha: 'a', hb: [Function: hb] }  
1 b true 1,2,3 1,2,3 a,b,c a,b,3 [object Object]
1 'b' true [ 1, 2, 3 ] [ '1', '2', '3' ] [ 'a', 'b', 'c' ] [ 'a', 'b', 3 ] { ha: 'a', hb: [Function: hb] }

参考

JavaScript 对象转换之 toString 和 valueOf