Я хочу сделать это: log(variableOrFunction)
И иметь возможность произвести это: variableOrFunction: actualValue
.
Я попробовал это:
export const log = (value) => {
console.log('' + value + ':', value)
console.log(value)
}
Но я получаю это вместо: [object Object]:
Что правильно делать?
Вы можете зарегистрировать их с помощью пары фигурных скобок ({}
), которая создаст объект с именем переменной в качестве ключа:
function someFunction() {};
const someOtherFunction = () => {};
const someValue = 9;
console.log({someFunction});
console.log({someOtherFunction});
console.log({someValue});
const renamed = someFunction;
console.log({renamed})
"Значение" относится к типу Object. Используйте JSON.stingify, чтобы узнать подробности,
export const log = (value) => {
console.log('' + value + ':', JSON.stringify(value))
console.log(JSON.stringify(value))
}
Вы не можете добиться этого в интерпретаторе JS так, как вы описали. Невозможно получить имя переменной внутри вашей функции журнала.
Вы можете делать это только внутри вызывающей функции вашего журнала, преобразовывая вызывающую функцию в строку и анализируя код и захватывая имя переменной, переданное вашей функции журнала.
Вы можете попытаться получить вызов функции журнала и сделать то, что я описал, но я бы не рекомендовал этого.
Если "value" имеет тип Object. Вы можете попробовать console.dir (значение) вместо длинного console.log, и вы должны иметь возможность видеть пары дерева объектов: пары значений в лучшем formate в консоли
Будет ли это работать для вас?
const log = function() {
const key = Object.keys(this)[0];
const value = this[key];
console.log('${key}:${value}');
}
let someValue = 2;
log.call({someVlaue}); //someValue:2
Работает с функцией тоже, даже сама.
log.call({log});
// It would return the following
log:function() {
const key = Object.keys(this)[0];
const value = this[key];
console.log('${key}:${value}');
}