转帖:http://www.xiaoxiaozi.com/2010/02/21/1706/
[b]二者并存的情况下,在数值运算中,优先调用了valueOf,字符串运算中,优先调用了toString。[/b]
[list]
[*]toString()——返回对象的原始字符串表示
[*]valueOf()——返回最适合该对象的原始值
[/list]
[b]二者并存的情况下,在数值运算中,优先调用了valueOf,字符串运算中,优先调用了toString。[/b]
[list]
[*]toString()——返回对象的原始字符串表示
[*]valueOf()——返回最适合该对象的原始值
[/list]
<script type="text/javascript">
function Money(gold, silver, coin)
{
this.gold = gold;
this.silver = silver;
this.coin = coin;
}
Money.parse = function(value)
{
var coin = parseInt(value % 25);
var silver = parseInt(value / 25 % 20);
var gold = parseInt(value / 500);
return new Money(gold, silver, coin);
}
Money.prototype.valueOf = function()
{
return ((this.gold * 20) + this.silver) * 25 + this.coin;
}
Money.prototype.toString = function()
{
return this.gold + "两黄金," + this.silver + " 两白银," + this.coin + "文钱";
}
var money1 = new Money(5, 6, 1);
var money2 = new Money(2, 4, 6);
//money1 + money2 调用两者valueOf之后的值相加
var money3 = Money.parse(money1 + money2);
//打印时调用了 toString方法
alert(money3);
</script>
本文探讨了在数值运算中优先调用valueOf方法与在字符串运算中优先调用toString方法的现象,并通过一个具体的Money类实例展示了这两种方法的应用。文章还提供了一个JavaScript示例,演示了如何使用这些方法进行不同类型的运算。

3156

被折叠的 条评论
为什么被折叠?



