Каким образом устаналивается во встроенных объектах JavaScript «название» объекта?
Если вывести в консоль (Firefox) объект, то получим [object Object].
А вот встроенные имеют имя: [object Window], [object Math] и т.п.
Где же устанавливается это имя? Это имя переменной объекта прототипа? Или что?
Значение constructor.name?
Хм, если я далее делаю так:
var obj = new MyObj();
то
obj.toString() вернёт, разумеется, эту строку, да.
Но, console.log(obj) выводит в фоксе всё равно [object Object]
В случае же с window:
window.toString() = console.log(window) = [object Window]
console.log(new MyObj + ""); // [object MyObj]
Это не совсем то же самое, что console.log(new MyObj).
Добавив пустую строку к new MyObj мы запросили строковое преобразование и объект отдал toString()
Но что тогда запрашивает console.log()?
Хм..
Спасибо.
Аааа, понял, вы наверно говорите про новый отладчик FF, он и в правду не вызывает toString, это уже чисто его реализация, он мог и что-то другое выводить.