乐趣区

关于javascript:js中的加号运算符

一, 对于援用类型对象 (我指的是 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 
退出移动版