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?
问问题
122 次
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 回答