我希望一个对象在数字上下文中返回一个值,在字符串上下文中返回一个完全不同的值。以下不起作用。
foo = {
toString: function() { return "string" },
valueOf: function() { return 123 }
}
console.log(foo * 2) // got 246, fine
console.log("hi " + foo) // got "hi 123", want "hi string"
答案 0 :(得分:3)
特别是对于连接运算符,没有办法强制将操作数视为字符串,语言要求将它们转换为原始值(即.valueOf()
。
唯一的解决方法似乎是使用String(foo)
或foo.toString()