Я написал декоратор/оболочку для window.console
так что я, среди прочего, могу отключить беспризорный console.log
в моей производственной среде. То, что я испытываю, - то, что моя обертка теперь появляется как источник фактической команды регистрации. Это затрудняет отладку через консоль, так как нажатие на ссылку в крайнем правом углу консоли приводит только к моей собственной функции вывода.
Следующий код является упрощенной версией реального скрипта, где я удалил некоторые функции, такие как включение/отключение и кэширование/очистка скрытых строк.
//Save reference to original function
var oConsole = window.console;
//Create custom console output method
var wConsole = function (method) {
return function () {
if (!window.console[method].enabled) {
//Apply log command to original console method
oConsole[method].apply(oConsole, Array.from(arguments)); //This is the row i get linked to
}
};
};
//Create a new console object for overriding original functions
var overrides = {
o: oConsole,
log: wConsole("log"),
debug: wConsole("debug"),
info: wConsole("info"),
warn: wConsole("warn"),
error: wConsole("error")
}
//Using jQuery i create a new instance and extend my defined overrides onto the original version
window.console = $.extend({}, window.console, overrides);
console.log("test 123"); //This is the row i want to link to
Когда я нажимаю на ссылку справа...
... я связан с этим рядом.
Есть ли способ сделать функцию "прозрачной" таким образом, чтобы ссылка ссылалась на вызываемого объекта моей функции-обертки?
Решение должно работать только в Google Chrome, так как я выполняю большую часть своей разработки там.
Chrome имеет опцию "черный ящик" файлов скриптов. Хотя это, по-видимому, в основном предназначено для игнорирования скриптов фреймворка при отладке (скрипты черного ящика будут пропущены при пошаговом выполнении кода), это также поможет в вашем случае, так как не будет отображаться в качестве источника для вывода на консоль.