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

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


Qyouu
浏览 206回答 3
3回答

长风秋雁

几乎所有内容都是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());

一只名叫tom的猫

有多种不同的toString方法。有Object.prototype.toString,任何对象都可以继承。还有Number.prototype.toString,Boolean.prototype.toString和String.prototype.toString。当你做'foo'.toString()您实际上是在调用String.prototype.toString-您不是在调用Object.prototype.toString。Object.prototype.toString = () => 'changed';  console.log('foo'.toString());尽管字符串和其他事物可以解释为对象,并且已经对其进行了Object.prototype.toString调用,但是通常您只是在调用原始特定于方法的方法,例如Boolean.prototype.toString或String.prototype.toString。(这些原型确实是继承自Object.prototype,但是该Object.prototype.toString方法被更接近的原型方法所遮盖,甚至可能根本不考虑)为什么这些方法存在于这些原语中?可能是为了保持一致性。如果您有不是undefined或的东西null,您将知道可以对其进行调用toString。

翻翻过去那场雪

您应该了解“原型继承”。在我看来,这是javascript语言最重要的概念之一。上面的答案是正确的,但是直到您花一些时间来学习这个主题之前,您都不会理解它们的含义。希望能给您一些指导!
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript