2014-03-12 6 views
3

У меня есть объект со следующей структуройПочему console.log (OBJ) показывают структуру OBJ вместо возвращаемого значения ToString()

var obj = { 
    toString: function(){ return "20" }, 
    valueOf: function(){ return 10; } 
}; 

alert(obj) //20 
console.log(obj) //Object {toString: function, valueOf: function} 

в отличие от тревоги (OBJ) Почему console.log (OBJ) показывает структура объекта вместо возвращаемого значения toString() ??

В обоих сценариях ожидается текст строки.

+0

Возможный дубликат [alert() return отличается от console.log()?] (Http://stackoverflow.com/questions/3909006/alert-return-different-from-console-log) – Gilles

ответ

1

console.log предназначен для отладки и предупреждения, предназначенного для отображения текста, поэтому оповещение будет искать функцию toString, если она существует, а затем показать результат, вместо этого отобразит [Объект объекта].

+0

Что я согласен но почему console.log() не вызывает toString() –

+3

Поскольку для отладки более полезно иметь полную структуру объекта. – Scimonster

+0

Можете ли вы сказать мне, что работает за console.log() ..? –

0

По словам Tim Down, метод

alert() преобразует объект, переданный ей в строку, используя toString() метод объекта [тогда] console.log() не только используется для отображения простой строки, но она также может позволяют взаимодействовать с переданным им объектом.

Также console.log() используется для отладки. По словам Jan Hančič,

Вы можете, например, зарегистрировать что-то на консоли, когда что-то произойдет.

Вы используете console.log для просмотра полной структуры объекта.

1

Если вы хотите, чтобы получить текст в консоли, то просто добавьте пустую строку как ниже

Смежные вопросы