gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 21:32:45 24 4
gpt4 key购买 nike

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

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

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

我可以改变

t.data = dataInput to t.data = testData

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

所以,我的问题是,我需要如何更改代码才能为 testLogger(或 dataReceiver 的任何实例)提供对其局部范围之外的变量的访问权限?

最佳答案

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

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

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

关于Javascript 模块模式访问更新的参数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35726345/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com