Я работаю над частью частичного приложения functional javascript workshop.Необходимость связывания или применения для частичного применения
Конкретно мне нужно:
Используйте частичное приложение для создания функции, которая фиксирует первый аргумент console.log.
С Пример вывода:
var info = logger('INFO:');
info('this is an info message');
// INFO: this is an info message
Мои наивные работы решения, но не использует применять или обязывать:
function logger(namespace) {
return (args) => console.log(namespace, args);
};
const info = logger('INFO:');
info('this is an info message');
// INFO: this is an info message
Рекомендуемое решение:
var slice = Array.prototype.slice
function logger(namespace) {
return function() {
console.log.apply(console, [namespace].concat(slice.call(arguments)))
}
}
Что я пропал без вести? Почему необходимо связывать или применять?
Попробуйте 'info ('это информационное сообщение', 123)', и вы увидите, что ваше решение передает только первый аргумент. Однако рекомендуемый конкатенирует все из них с пространством имен и передает результат в 'console.log' через apply. – raina77ow
Какой смысл использовать «console» в качестве первого аргумента? –
Это объект контекста ('this' внутри функции). – JMM