一, 对于援用类型对象 (我指的是 String,Date,Object,Array,Function,Boolean) 的 + 运算符运算过程如下!
1, 首先调用此对象的 valueOf 办法, 失去返回数值 A
2, 而后把此数值 A 转换成数字, 失去的是最终数值
function w(s){document.writeln("<br/>");
document.writeln(s);
document.writeln("<br/>-----------------------------");
}
String.prototype.valueOf=function(){return 1;};
w(+new String("sss"));// 输入 1
String.prototype.valueOf=function(){return "a";};
w(+new String("sss"));// 输入 NaN
Date.prototype.valueOf=function(){return 1;};
w(+new Date());// 输入 1
Date.prototype.valueOf=function(){return "a";};
w(+new Date());// 输入 NaN
Object.prototype.valueOf=function(){return 1;};
w(+{});// 输入 1
Object.prototype.valueOf=function(){return "a";};
w(+{});// 输入 NaN
Array.prototype.valueOf=function(){return 1;};
w(+[]);// 输入 1
Array.prototype.valueOf=function(){return "a";};
w(+[]);// 输入 NaN
var s=function(){};
Function.prototype.valueOf=function(){return 1;};
w(+s);// 输入 1
Function.prototype.valueOf=function(){return "a";};
w(+s);// 输入 NaN
Boolean.prototype.valueOf=function(){return 1;};
w(+new Boolean());// 输入 1
Boolean.prototype.valueOf=function(){return "a";};
w(+new Boolean());// 输入 NaN
二, 对于根本数据数据类型, 其值转换成数字
w(+5);// 输入 5
w(+true);// 输入 1
w(+false);// 输入 0
w(+"ss");// 输入 NaN
w(+"111");// 输入 111