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語言最重要的概念之一。
上面的答案是正確的,但是直到您花一些時間來學習這個主題之前,您都不會理解它們的含義。
希望能給您一些指導!
添加回答
舉報
