Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/415.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
访问更新参数值的Javascript模块模式_Javascript - Fatal编程技术网

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

访问更新参数值的Javascript模块模式,javascript,Javascript,我试图寻找我的问题的答案,但我开始认为,鉴于缺乏结果,我显然没有正确地表达这个问题。考虑到这一点,如果这篇文章的标题有误导性,我很抱歉,我仍然在学习 下面是我的代码的简化版本 var testData=['a','b'] var addReceiver = (function () { dataReceiver = function (dataInput) { t = this t.data = dataInput;

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

下面是我的代码的简化版本

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>
让testLogger每秒记录数组['c'、'd'、'e'],而不是['a'、'b']

我可以改变

t.data = dataInput to t.data = testData
要实现这一点,但这显然毫无意义,否则我创建的每个dataReceiver新实例都会引用相同的数据输入


因此,我的问题是,我需要如何更改代码以提供testLogger Varable(或dataReceiver的任何实例)对其局部范围之外的变量的访问

使用您创建的
对象
,而不是访问全局变量

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

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

是的,理论上这是一个选项。但我可能有3个变量,将testData作为输入,第4个变量使用另一个变量,例如
var testLogger1=newdatareceiver(testData);var testLogger2=新数据接收器(testData);var testLogger3=新数据接收器(testData);var testLogger4=新数据接收器(其他数据)var testLogger = new dataReceiver(testData);
testLogger.data = [1,2,3,4];