console.*** の実行をon/offで制御できるようにしたclass
/**
* Logger Class
*
* `window.console` のラッパー.
* `logger.on()`, `logger.off()` で `console.*` を実行するかどうか切り替えられる.
* constructor の引数に boolean を渡して、console出力の初期状態を指定できる.
*/
class Logger {
constructor(status = false) {
this._debugMode = !!status
const bindConsoleMethods = function bindConsoleLogger(self) {
const ignorePropList = ['on', 'off', '_debug', '_debugMode']
const props = Object.keys(window.console).filter(prop => !ignorePropList.includes(prop))
for (const prop of props) {
self[prop] = function() {
if (self._debug) window.console[prop](...[...arguments])
}
}
}
bindConsoleMethods(this)
}
set _debug(status) {
this._debugMode = !!status
}
get _debug() {
return this._debugMode
}
on() {
this._debug = true
}
off() {
this._debug = false
}
}
export default Logger