我可以知道在什么条件下toString()和valueOf()方法被js引擎调用或者这些方法何时调用?还有哪个方法被称为拳头?
答案 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。