1

Can i know In what condition toString() and valueOf() methods gets invoked by js engine or when are these methods called?Also which method gets called fist?

4

1 回答 1

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 时要小心。

于 2013-04-22T16:25:58.210 回答