JavaScript « Строковое представление объекта через Console.log

Если у объекта переопределить метод toString, то при строковом преобразовании, например при alert(obj) будет вызван этот метод. Как сделать также с console.log()?
Т.е. чтобы при console.log(obj) вызывался toString

1 ответов


Например так:


console.log("" + obj);
 
Функция строкового логирования:

console.logStr = function (obj) {
   console.log("" + obj);
};
 
Вот вариант для любого числа параметров (как может и console.log):

console.logStr = function () {
   var strings = [];
   for (var i=0; i<arguments.length; i++) {
      strings.push("" + arguments[i]);
   }
   console.log.apply(console, strings);
};
 

Можно воспользоваться другим подходом к логированию:
Создать глобальную функцию


function toLog(obj){
   ... // Проверки на реализацию в браузерах, варку кофе, блинчики
   if(obj.constructor.name === 'Object')
       console.log(obj.toString) // JSON.stringify
}
 
При разработке пользоваться этой функцией, при выходе в продакшен - избавляемся от выполнения содержимого функции - в итоге отрубается все логирование.