Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
return (...args) => logToDOM.apply(null,[...args,options.node]);
Почти. Идея хорошая, надо было сделать так:
return (...args) => logToDOM(...args, options.node);Стрелочные функции не умеют в arguments
function Logger(destination, lvl) {
return lvl => msg => destination(lvl, msg)
}
function logToConsole(methodForConsole = 'log') {
return (lvl, msg) => console[methodForConsole](`Level: ${lvl}, Message: ${msg}`)
}
function logToDom(node) {
return (lvl, msg) => node.innerHTML = msg
}
const loggerToConsole = Logger(logToConsole())
const warnToConsole = loggerToConsole('warn')
warnToConsole('Hello, world!')
const loggerToDom = Logger(logToDom(document.querySelector('#output')))
const errorToDom = loggerToDom('error')
errorToDom('<h1 style="color:red;">Oh no!</h1>')
Паттерн Стратегия на JavaScript