Make toPrimitive转换取决于上下文

时间:2013-06-14 12:15:01

标签: javascript types

我希望一个对象在数字上下文中返回一个值,在字符串上下文中返回一个完全不同的值。以下不起作用。

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"

1 个答案:

答案 0 :(得分:3)

特别是对于连接运算符,没有办法强制将操作数视为字符串,语言要求将它们转换为原始值(即.valueOf()

唯一的解决方法似乎是使用String(foo)foo.toString()

的明确演员表