为了账号安全,请及时绑定邮箱和手机立即绑定

为什么toString()是不需要对象的方法?

为什么toString()是不需要对象的方法?

Qyouu 2021-05-07 18:18:11
我对编程的了解越深,我以为我所知道的旧概念就会使我感到困惑。例如,toString()方法。我怎么能将此方法应用于不是对象的变量?是否因为toString()是可应用于所有数据类型的内置javascript方法?
查看完整描述

3 回答

?
长风秋雁

TA贡献1757条经验 获得超7个赞

几乎所有内容都是JavaScript中的对象。您所称的原语(字符串,数字等)都具有方法:


console.log("Message".toUpperCase());

console.log(123.toString());

因此,您可以将toString任何内容(即使它看起来并不像对象)应用于任何事物的原因是,因为一切实际上都是一种对象,这意味着它可以具有方法。以下是toString有关不同事物的一些示例:


console.log(123..toString());

console.log(["A", "B", "C"].toString());

console.log(typeof true.toString());


查看完整回答
反对 回复 2021-05-27
?
一只名叫tom的猫

TA贡献1906条经验 获得超3个赞

有多种不同的toString方法。有Object.prototype.toString,任何对象都可以继承。还有Number.prototype.toStringBoolean.prototype.toStringString.prototype.toString

当你做

'foo'.toString()

您实际上是在调用String.prototype.toString-您不是在调用Object.prototype.toString


Object.prototype.toString = () => 'changed';
 console.log('foo'.toString());


尽管字符串和其他事物可以解释为对象,并且已经对其进行了Object.prototype.toString调用,但是通常您只是在调用原始特定于方法的方法,例如Boolean.prototype.toStringString.prototype.toString。(这些原型确实是继承自Object.prototype,但是该Object.prototype.toString方法被更接近的原型方法所遮盖,甚至可能根本不考虑)

为什么这些方法存在于这些原语中?可能是为了保持一致性。如果您有不是undefined或的东西null,您将知道可以对其进行调用toString


查看完整回答
反对 回复 2021-05-27
?
翻翻过去那场雪

TA贡献2065条经验 获得超14个赞

您应该了解“原型继承”。在我看来,这是javascript语言最重要的概念之一。

上面的答案是正确的,但是直到您花一些时间来学习这个主题之前,您都不会理解它们的含义。

希望能给您一些指导!


查看完整回答
反对 回复 2021-05-27
  • 3 回答
  • 0 关注
  • 205 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信