Javascript:使用回调编辑对象内的变量

时间:2017-01-17 19:48:35

标签: javascript callback

我有这个文件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;
}

现在的问题是:如何更改testconfig.js的值?我希望它是5,而不是4。尝试config.test = something,没有用。

1 个答案:

答案 0 :(得分:0)

如果你真的需要使用回调函数,那么你必须在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.test = 5的新Config对象

但是你必须记住,你不能修改this.config.test的真实(硬编码)值,而不是你正在创建一个类型为Config的新实例对象。

也许你真的不需要函数回调,而是可以在config.js文件中以这种方式创建一个非硬编码的函数构造函数

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

然后您可以创建对象并传递其他文件中所需的任何测试值

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

我希望这可以帮到你。