Существует несколько видов 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
.(Эти прототипы do наследуются от Object.prototype
, но метод Object.prototype.toString
затеняется более близким методом-прототипом и может даже не рассматриваться)
Почему этиметоды существуют для этих примитивов?Вероятно, ради последовательности.Если у вас есть что-то, что не undefined
или null
, вы будете знать, что сможете позвонить на toString
.