tl; dr:
Я хочу отредактировать, как выглядит функция. например, когда вы console.log
в Firefox или Chrome, я хочу отредактировать аргументы и имя, которые мы видим, а также отредактировать свойства .length
и .name
. Возможно ли это?
Более длинная версия:
Я хочу скопировать и настроить выполнение данной функции, добавив инструкции до и после. Мой код выглядит так:
function customizeFunction(funcToCustomize) {
return function(...args) {
// Some instructions, for example :
console.log('Calling', funcToCustomize.name);
// The function itself
let returnValue = funcToCustomize.call(this, ...args);
// Or simply funcToCustomize(...args) if you prefer
// Some instructions if call terminates :
console.log('success, no error encountered during call');
return returnValue;
}
}
Я тестировал его на консоли Firefox:
let original = function (x,y) {
console.log(x+y);
};
let custom = customizeFunction(original);
custom(2,3);
/* Output :
Calling original
5
success, no error encountered during call debugger eval code:12:17
undefined
*/
Он работает как задумано. Но всякий раз, когда я это делаю:
console.log(custom);
Он выводит function customizeFunction(args)
(тогда как original
выводит function original(x,y)
). Могу ли я изменить какие-то свойства для вывода function original(x,y)
или function custom_original(x,y)
?
Кроме того, original.length
равно 2, а custom.length
равно 0. Могу ли я также изменить это?