Почему `Object.prototype.toString` всегда возвращает` [object *] `?

Если вы позвонитеObject.prototype.toString.call(anything) результат всегда[object Something], гдеSomething может быть одной из нескольких вещей. Мой вопрос: почему часть "объекта" там? Кажется излишним всегда иметь его там. Это ничего не говорит вам об аргументе, который был передан.

Object.prototype.toString.call(null);
=> [object Null]

Object.prototype.toString.call(undefined);
=> [object Undefined]

посколькуnull а такжеundefined не являются объектами (и терпит неудачуCheckObjectCoercible), «объектная» часть действительно, действительно кажется бессмысленной.

Я должен думать, что изначально была какая-то причина, по которой часть «объект» была помещена туда, даже если причина была утеряна с тех пор, и теперь она просто сохранилась по историческим причинам.

Может ли кто-нибудь помочь пролить свет на это?

Чтобы было ясно, я уже знаю, какObject.prototype.toString может быть использован для получения[[Class]] (тип) объекта. Мой вопрос касается причины формата возвращаемой строки, в частности части «объект» в начале. Я хочу знать, была ли когда-либо причина для этой части или есть ли возможная будущая причина для этой части. Может быть, в будущем он может вернуть что-то, кроме «объекта»? Могу ли я ожидать, что он всегда будет возвращать «объект»? Если так, то почему это даже возвращает это? Кто хочет, чтобы функция всегда возвращала одно и то же, независимо от того, какой ввод?

Ответы на вопрос(3)

Ваш ответ на вопрос