在 Javascript 中,每个对象都有 valueOf ()和 toString ()方法。我本来以为每当调用字符串转换时都会调用 toString ()方法,但显然它被 valueOf ()超越了。
例如,代码
var x = {toString: function() {return "foo"; },
valueOf: function() {return 42; }};
window.console.log ("x="+x);
window.console.log ("x="+x.toString());
将打印
x=42
x=foo
在我看来,这是倒退。.例如,如果 x 是一个复数,我希望 valueOf ()给出它的大小,但是无论什么时候我想转换成字符串,我都需要类似于“ a + bi”的东西。而且我不希望在包含字符串的上下文中显式地调用 toString ()。
事情就是这样吗?