0

このコードがあるソースjsファイルがあります。スクリプトで配列を管理する必要がありest_bandwidthますが、正しい作成が確実であっても、グローバルに表示することはできません。なんで?関数の外でも配列を確認するにはどうすればよいですか?

var maxBandwidth = 8 * 1024 * 1024;        // 8 Mbps
var est_bandwidth = new Array();
function bandwidth(initial_bps, weight_f, weight_s){

    this.bps = initial_bps;
    this.weight_f = weight_f;
    this.weight_s = weight_s;

}

bandwidth.prototype.calcWeightedBandwidth = function(_bps) {
    this.bps = parseInt(((this.weight_f * this.bps) + (this.weight_s * _bps)) / 2) * 0.9;
    if (this.bps > maxBandwidth && maxBandwidth > 0) this.bps = maxBandwidth;
    est_bandwidth.push(this.bps / 1024);
    return this.bps;
}

アクセスしようとするest_bandwidthと、空の配列になります。これで宣言後に変更した場合:

est_bandwidth[0] = 1;
est_bandwidth[1] = 2;

結果として、コンソールに[1,2]が表示されます。見ることはできますが、関数の外にしか見えest_bandwidthず、理由はわかりません。

これが完全なコードです:https ://jsfiddle.net/4DY5C/1 。banda_stimataの代わりに参照する必要がありますest_bandwidth。コードはソースの中でbandwidth.jsにあります。

4

1 に答える 1

0

コードを JavaScript コンソールに貼り付けて、次のシーケンスを実行しました。

> bw = new bandwidth(9600, 0.8, 0.9)
bandwidth
> bw.calcWeightedBandwidth(9600)
7344
> est_bandwidth
[7.171875]

そのため、コードは正常に実行されているようで、est_bandwidth問題なくアクセスできます。

スクリプトを別の方法で実行していますか?

于 2012-12-17T15:01:34.770 に答える