JS valueOf与字符串
js在处理字符串和数值加运算的时候会转换数值为字符串 然后执行字符串连接
在覆盖String.prototype.valueOf之前,new String(111)这样的字符串与数值加法也是字符串连接:
> var s = new String(11); undefined > s+11 '1111'
重写String.prototype.valueOf之后 用new String("xxx")构造的字符串对象会转换成数值与数值进行加法运算 而字符串常量仍旧是字符串连接
如下:
> String.prototype = function(){
... return 11; ... } [Function] > str = "22"; '22' > var str2 = new String("22"); undefined > var str3 = new String(22); undefined > 11+str '1122' > 11+str2 22 > 11+str3 22 >