进行原始转换取决于上下文[重复项]

问题描述 投票:8回答:1

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

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"
javascript types
1个回答
3
投票

addition operator将使用内部抽象操作ToPrimitive将两个操作数都转换为基元,然后,如果一个操作数是字符串,它将使用内部抽象操作ToPrimitive将两个操作数都转换为字符串(请注意:与userland对象上的ToString方法不同。)

结果是,在语言中添加ToString后,您现在可以实现目标:

toString
© www.soinside.com 2019 - 2024. All rights reserved.