一,对于援用类型对象(我指的是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
发表回复