Я новичок в Node.js и JavaScript, поэтому мой вопрос может быть глупым. Я хотел знать, правильный ли мой пример кода с точки зрения времени жизни переменной. Здесь я создаю свой собственный модуль logger, который является оберткой для существующего winston logger, но скрывает эту зависимость, выставляя свои собственные методы. Я создаю локальную переменную 'logger' внутри конструктора класса, а затем открываю доступ к некоторым методам-членам, используя присваивание "this". Этот пример работает, но я сомневаюсь, что это хороший способ реализовать это, поскольку требует, чтобы локальная переменная оставалась в памяти после завершения работы конструктора. Я считаю, что сборщик мусора должен отслеживать эту ситуацию и не уничтожать локальные переменные, поскольку существуют внешние ссылки, но стоит ли это делать? Должен ли я использовать
this.logger = ...
вместо
let logger = ...
чтобы сохранить всю переменную открытой (чего я хочу избежать, чтобы скрыть детали реализации)?
Код:
var winston = require('winston');
class Logger {
constructor () {
let logger = winston.createLogger({
level: 'debug',
format: winston.format.json(),
transports: [
new winston.transports.Console(),
new winston.transports.File({filename: 'results.log'})
]
});
this.error = logger.error;
this.warn = logger.warn;
this.info = logger.info;
this.verbose = logger.verbose;
this.debug = logger.debug;
}
}
module.exports = new Logger;