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());
TA贡献1906条经验 获得超3个赞
有多种不同的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
。
TA贡献2065条经验 获得超14个赞
您应该了解“原型继承”。在我看来,这是javascript语言最重要的概念之一。
上面的答案是正确的,但是直到您花一些时间来学习这个主题之前,您都不会理解它们的含义。
希望能给您一些指导!
添加回答
举报