object to primitive in javascript

 例1:

var a={};  alert(a); //[object Object];

例2:

var a={

  toString:function(){

    return 1;

  }  

}

alert(a);  // 1

a+1;      //2

例3:

var a={toString:function(){return 1;},valueOf:function(){reuturn 2};}

alert(a); // 1

a+1;     // 3

---------------------------------------------------------------------------------------------------------------------------------------------------

+操作会如下步骤:

  1. Let lref be the result of evaluating AdditiveExpression.

  2. Let lval be GetValue(lref).

  3. Let rref be the result of evaluating MultiplicativeExpression.

  4. Let rval be GetValue(rref).

  5. Let lprim be ToPrimitive(lval).

  6. Let rprim be ToPrimitive(rval).

  7. If Type(lprim) is String or Type(rprim) is String, then

    1. Return the String that is the result of concatenating ToString(lprim) followed by ToString(rprim)

  8. Return the result of applying the addition operation to ToNumber(lprim) andToNumber(rprim). See the Note below 11.6.3.

+ specification: http://es5.github.io/index.html#x11.6.1

原文地址:https://www.cnblogs.com/Mr-Joe/p/4242215.html