不为Number类型的Object调用Overriden toString()

时间:2018-04-22 20:02:24

标签: javascript types tostring

为什么在 console.log("" + x)中不会自动调用toString()?同样的情况是警告'功能。我在很多地方读过这些函数会自动将对象转换为带有toString()方法的字符串。



Number.prototype.toString = function ()
{
  return "Hello!";
};

x = new Number(42);

console.log("" + x);
console.log("" + x.toString());




在提出问题之前,我正在寻找约两个小时的答案。我看到了这个链接Why does Boolean primitive not call prototype toString()?。这是类似的东西,但它仍然没有回答我的问题。非常感谢明确的解释。

1 个答案:

答案 0 :(得分:2)

您可以更改valueOf方法并将其用于获取原始值。

Number.prototype.valueOf = function () {
    return "Hello!";
};

var x = new Number(42);

console.log("" + x);
console.log("" + x.toString());