toString 和 valueOf 总结

两者的共同点与不同点:

  共同点:二者都能用来数据转换,并且在输出对象时会自动调用。

  不同点:二者并存的情况下,在数值运算中,优先调用了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'

 

 

 

 

原文地址:https://www.cnblogs.com/web-fusheng/p/6801106.html