访问更新参数值的Javascript模块模式
我试图寻找我的问题的答案,但我开始认为,鉴于缺乏结果,我显然没有正确地表达这个问题。考虑到这一点,如果这篇文章的标题有误导性,我很抱歉,我仍然在学习 下面是我的代码的简化版本 var testData=['a','b']访问更新参数值的Javascript模块模式,javascript,Javascript,我试图寻找我的问题的答案,但我开始认为,鉴于缺乏结果,我显然没有正确地表达这个问题。考虑到这一点,如果这篇文章的标题有误导性,我很抱歉,我仍然在学习 下面是我的代码的简化版本 var testData=['a','b'] var addReceiver = (function () { dataReceiver = function (dataInput) { t = this t.data = dataInput;
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=新数据接收器(其他数据)在这种情况下,按照您建议的方式进行更新是不切实际的。传递到testData的数据是通过websocket来的,并且可以在任何时候更新,当它更新时,我希望testLogger在下次刷新时使用这些更新的值。这有意义吗?@cb1210因此我建议您将这些对象保存在一个数组中,每当需要更改值时,您需要迭代该数组并逐个更改对象的属性值。好的,那么答案是我不能,但是,如果我能够以某种方式获得当前使用websocket作为其数据输入的对象的列表,我可能会在websocket onmessage事件侦听器中添加一些逻辑?谢谢你的帮助。
var testLogger = new dataReceiver(testData);
testLogger.data = [1,2,3,4];