以前写JS都是简单的表单验证,从来也没有做过其他什么操作。
有很多人肯定写过这样的代码
1 var number = 10; 2 alert(number + 10); // result:20 3 alert(number + "10"); // result:1010
我当初看这几段代码的时候,很随意的就过去了啊。很明显的东西啊。数据自动转换。
没看出有啥不妥的地方。为什么会这样了啊。我也没有了解过。今天我看到这样的一个例子就有点发懵了。
我们先来自定义一个Demo来看看
function Demo(value) { this .valueOf = function () { alert( "调用ValueOf方法" ); return value; } this .toString = function (){ alert( "调用toString方法" ); return "ToString" + this .valueOf(); } |
} |
var demo = new Demo(22);<BR> |
alert(demo + 10); |
document.write(demo); |
如果先要转换成数值类型的时候,他就调用valueOf方法。如果先转换成字符类型的时候,就调用toString方法。
记住这一点哦。
不过我也不知道明白了这一点有什么用处。大家可以发表自己的意见。我们一来来学习诡异的JS.