每个模块调用创建新的Object / instance,变量仍然保留初始值

时间:2014-04-20 21:34:22

标签: javascript

我正在写一个小脚本,它会被多次调用,每次都会采用不同的参数。

我的问题是,第一个电话中的内容仍然在第二个电话中徘徊,这里有一个例子,我覆盖了某些事情'在第一次通话但第二次通话时:

var Module = (function () {

'use strict';

var somethings = '';

var exports = {};

exports.init = function (something) {
    if (something) {
        somethings = something;
    }
    console.log(somethings);
};

return exports;

})();

Module.init('Hiya');
Module.init();

事情就在这里' Hiya'记录两次。我知道为什么,但我不认为我使用正确的JS模式,我需要为每个调用提供全新的变量。任何人都可以向我推荐更好的模式吗?我非常感激,并想学习如何写出更好的JS!

jsFiddle

2 个答案:

答案 0 :(得分:0)

如果您不再需要变量,请删除私有变量并使用函数paramether

var Module = (function () {

'use strict';
var somethings = [];
var exports = {};

exports.init = function (something) {
    if (something) {
        somethings.push(something);
        console.log(something);
    }

};

return exports;

})();

Module.init('Hiya');
Module.init();

在这种情况下,只记录了一件事,并且没有存储消息,因为每次都需要一个新消息。

修改

我每次都更新代码以保存参数

答案 1 :(得分:0)

在返回函数内的每次调用时声明要更新的变量,并且仅在应该挂起的变量之外声明:

var Module = (function () {
    'use strict';
    var exports = {};
    exports.init = function (something) {
        var somethings = '';
        if (something) {
            somethings = something;
        }
        console.log(somethings);
    };
    return exports;
})();