Javascript: редактирование переменной внутри объекта с помощью обратного вызова

У меня есть этот файл config.js:

module.exports = function (cb) {
    this.config = {
        test: 4
    }
    return this.config;
}

Я получаю его от option.js:

var Config = require('./config.js');

new Config(function (config) {
    var a = config.test;
}

Теперь вопрос: как можно изменить значение testin config.js? Я хочу, чтобы это было 5не 4так . Пыталсяconfig.test = something, не получилось.

1 ответ

  1. Если вам действительно нужно использовать функцию обратного вызова, то вы должны вызвать ее, в вашем config.jsфайле вы не вызываете функцию обратного вызова.

    Вы можете вызвать функцию обратного вызова и редактировать значение config.testтаким образом:

    module.exports = function (cb) {
            this.config = {
            test: 4
        }
        cb(this.config);
    }
    

    и создание экземпляра нового объекта Config таким образом:

    var Config = require('./config.js');
    
    new Config(function (config) {
        config.test++; // or any operation that you consider propertly
    });
    

    таким образом, вы получаете новый объект Config с config.тест = 5

    Но вы должны помнить, что вы не изменяете реальное (жестко закодированное) значение this.config.testвместо того, что вы создаете новый объект экземпляра типа Config.

    Возможно, вам действительно не нужен обратный вызов функции, вместо этого вы можете создать не жестко закодированный конструктор функции таким образом в вашем config.jsфайле

    module.exports = function (test) {
        this.config = {
            test: this.test
        }
    }
    

    затем можно создать объект и передать любое тестовое значение, которое необходимо в другом файле

    var Config = require('./config.js');
    new Config(5);
    

    Надеюсь, это поможет вам.