两者的共同点与不同点:
共同点:二者都能用来数据转换,并且在输出对象时会自动调用。
不同点:二者并存的情况下,在数值运算中,优先调用了valueOf,字符串运算中,优先调用了toString,没有操作运算符的情况下,优先调用toString。
所有对象继承了两个转换方法:
toString(),主要是把对象转换为字符串;
valueOf(),主要把对象转换成一个基本数据的值;
例子:
var obj = {}; obj.valueOf = function() { return 10; } obj.toString = function() { return "return value"; } var result = obj + 1; alert(result);//var result = obj.valueOf() + 1; alert(obj); //alert(obj.toString());
例子2
function obj() { } obj.prototype.toString = function(){ return 'dfsf'; }; obj.prototype.valueOf = function(){ return '3333'; }; var e = new obj(); var o = new obj(); alert(o);//alert(obj.toString()) //'dfsf' alert(o+e);//alert(obj.valueOf()+obj.valueOf()) //'3333'+'3333'