オブジェクトに保存したい他の場所からデータを受け取る関数があります。必要なオブジェクトに完全に保存できますが、別のファイルでそのオブジェクトの配列プロパティにアクセスしようとすると、配列に何もないというエラーが表示され続けます。私が使用しているコードは次のとおりです。
スペクトルアナライザー.js:
SpectrumAnalyzer.prototype.configSAHandler = function(event)
{
if (this.currComm < saCommands.length)
SAConfigure(this.parent, this.configurl, saCommands[this.currComm++]);
else {
this.ws = SAStream(this.spectrumurl, this);
}
}
呼び出す
function SAStream(url,sa)
{
ws.onmessage = function (evt) {
//var array = window.atob(evt.data);
if (evt.data instanceof ArrayBuffer) {
var array = new Uint8Array(evt.data);
sa.drawSpectrum(array);
for (var i = 0, j = 0; j < (array.length); i += this.binWidth, j++) {
sa.channelData[j] = array[j]; //This assignment works fine
console.log(sa.channelData[j]); //Logging the data to the console works fine.
}
}
};
sa または SpectrumAnalyser オブジェクトのクラス定義は次のとおりです。
function SpectrumAnalyzer( said, parent, configurl, spectrumurl )
{
this.id = said;
this.parent = parent;
this.configurl = configurl;
this.spectrumurl = spectrumurl;
this.channelData = new Array();
//...rest of the function
}
メイン コードは current.html に含まれています。
var sa1 = new SpectrumAnalyzer( 1, 'SA1', "ws://console.sb3.orbit-lab.org:6101", "ws://console.sb3.orbit-lab.org:6100");
// ...some other stuff
for(var i = 0; i < 256; i++)
{
// This is the part that is giving me the error of "undefined"
console.log(sa1.channelData[i]);
}
channelData
配列がファイルに値を格納している理由は正確にはわかりませspectrumanalyser.js
んが、current.html の JavaScript 部分に値を格納していません。ちなみに、SpectrumAnalyser
コンストラクターの URL の先頭にある「ws」は、WebSocket を使用してデータを取得していることを示しています。どんな助けでも大歓迎です。詳細が不足している場合はお知らせください。喜んで提供します。