一,对于引用类型对象(我指的是string,date,object,array,function,boolean)的+运算符运算过程如下!
1,首先调用此对象的valueof方法,得到返回数值a
2,然后把此数值a转换成数字,得到的是最终数值
我的测试如下:
复制代码 代码如下:
function w(s){
document.writeln(
);
document.writeln(s);
document.writeln(
-----------------------------);
}
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