Javascript模块模式访问更新的参数值

时间:2016-03-01 15:04:55

标签: javascript

我试图寻找我的问题的答案,但我开始认为,由于缺乏结果,我显然没有正确地表达问题。考虑到这一点,如果这篇文章的标题具有误导性,我会道歉,我仍在学习。

我的代码的简化版本

        var testData = [' a',' b']

    var addReceiver = (function () {
        dataReceiver = function (dataInput) {
            t = this
            t.data = dataInput;
            console.log(t.data);
            t.interval = setInterval(function () {
                t.update();
            }, 1000);
            t.stopUpdate = function () { clearInterval(t.interval); };
            t.update = function () {
                //t.data = dataInput;
                console.log(t.data);
            };
        };
    })()

    var testLogger = new dataReceiver(testData);
</script>

我希望模仿的行为是当我输入控制台时

testData = ['c','d','e']

让testLogger每秒记录一次数组[&#39; c&#39;,&#39; d&#39;&#39; e&#39;],而不是[&#39; a&#39; &#39; b&#39;]

我可以改变

t.data = dataInput to t.data = testData

实现这一目标,但这显然是没有意义的,否则我创建的dataReceiver的每个新实例都会引用相同的数据输入。

所以,我的问题是,我如何更改代码以提供testLogger vairable(或任何dataReceiver实例)访问其本地范围之外的变量?

1 个答案:

答案 0 :(得分:2)

使用您创建的object而不是访问全局变量

var testLogger = new dataReceiver(testData);
testLogger.data = [1,2,3,4];

现在您将能够打印新注入的数据。我的意思是setInterval将打印更新后的值。