JavaScript « Строковое представление объекта через Console.log
Если у объекта переопределить метод toString, то при строковом преобразовании, например при alert(obj) будет вызван этот метод. Как сделать также с console.log()?
Т.е. чтобы при console.log(obj) вызывался toString
Т.е. чтобы при 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
}
При разработке пользоваться этой функцией, при выходе в продакшен - избавляемся от выполнения содержимого функции - в итоге отрубается все логирование.