toString()和valueOf()方法的应用领域

时间:2013-04-22 16:22:51

标签: javascript

我可以知道在什么条件下toString()和valueOf()方法被js引擎调用或者这些方法何时调用?还有哪个方法被称为拳头?

1 个答案:

答案 0 :(得分:3)

toString将值转换为字符串,valueOf将其转换为数字。究竟要调用哪一个取决于你要求的上下文。

如果javascript期望一个字符串或试图将对象强制转换为字符串,它将使用toString。如果它期望一个数字,它将使用valueOf。

此规则的例外情况是,当一个值同时包含toString和valueOf时,它总是调用valueOf。

var x = {
    toString: function(){
        return "x";
    },

    valueOf: function(){
        return 2;
    }

}


alert("String :"+x); //2

alert("Number :"+(0+x)); //2

小提琴:http://jsfiddle.net/DsGKf/

所以要小心在你想要充当字符串的东西上定义valueOf。