我试图寻找我的问题的答案,但我开始认为,由于缺乏结果,我显然没有正确地表达问题。考虑到这一点,如果这篇文章的标题具有误导性,我会道歉,我仍在学习。
我的代码的简化版本
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实例)访问其本地范围之外的变量?
答案 0 :(得分:2)
使用您创建的object
而不是访问全局变量
var testLogger = new dataReceiver(testData);
testLogger.data = [1,2,3,4];
现在您将能够打印新注入的数据。我的意思是setInterval
将打印更新后的值。