2
我試圖尋找我的問題的答案,但我開始認爲,鑑於缺乏結果,我顯然不正確地表達問題。考慮到這一點,如果這篇文章的標題有誤導性,我很抱歉,但我仍然非常瞭解。Javascript模塊模式訪問更新的參數值
我有我的代碼下面
VAR TESTDATA =簡化版本[「一」,「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']每秒,而不是[ '一', 'b']。
我可以改變
t.data = dataInput to t.data = testData
實現這一點,但是這顯然是毫無意義的,要不然我創建dataReceiver的每一個新實例將有相同的數據輸入的參考。
所以,我的問題是,我將如何更改代碼以提供testLogger可擴展(或任何dataReceiver實例)訪問其局部範圍之外的變量?
是的,理論上這是一個選項。但我可能有3個變量,它們將testData作爲輸入,第4個變量使用另一個變量,例如'var testLogger1 = new dataReceiver(testData); var testLogger2 = new dataReceiver(testData); var testLogger3 = new dataReceiver(testData); var testLogger4 = new dataReceiver(otherData);'在這種情況下,按照您的建議進行更新並不實際。傳遞給testData的數據通過websocket傳遞,並可以在任何時候更新,當它發生時,我希望testLogger在下次刷新時使用這些更新的值。那有意義嗎? – cb1210
@ cb1210爲此,我建議您將這些對象保存在數組中,並且每當必須更改該值時,都需要迭代該數組並逐個更改對象的屬性值。 –
好吧,那麼答案是我不能,但我可能會添加一些邏輯到websocket onmessage事件監聽器,如果我能以某種方式獲得當前使用該websocket作爲他們的dataInput的對象的列表?感謝您的幫助。 – cb1210