2012-12-17 2 views
0

이 코드가있는 src js 파일이 있습니다. 스크립트에서 est_bandwidth 배열을 관리해야하지만 올바른 작성을 확신 할지라도 전 세계적으로 볼 수는 없습니다. 왜? 함수 외부에서도 배열을 어떻게 볼 수 있습니까?함수 프로토 타입 JS의 가변 가시성

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를 볼 수 있지만 함수 밖에서 만 나는 그 이유를 모른다.

+0

언제 어떻게 어레이에 액세스합니까? 코드 자체는 기술적으로 잘 작동합니다. 'parseInt'는 문자열로부터 정수를 파싱하기위한 것이고, 숫자 타입에서 그것을 호출하는 것은 의미가 없습니다. – Esailija

+0

여기 완전한 코드입니다 : jsfiddle.net/4DY5C/1 당신은 est_bandwidth 대신 banda_stimata를 참조해야합니다. 코드는 출처 중 대역폭 .js에 있습니다. 이론적으로는 – user1903898

답변

0

난 그냥 자바 스크립트 콘솔에 코드를 붙여 넣은 다음이 순서 실행 :

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

그래서 코드가 잘 실행하는 것 같다 내가 문제없이 est_bandwidth에 액세스 할 수 있습니다.

스크립트를 다르게 실행합니까?

+0

... 아니요. 나는이 샘플 코드 (http://www-itec.uni-klu.ac.at/dash/js/dashtest-ibmff.html?MPD=http://www-itec.uni-klu.ac.at/)를 가져 갔다. dash/js/content/bunny_ibmff_720.mpd) est_bandwidth 선언과 값 밀어 넣기를 추가했습니다. 좀 봐 줄래? – user1903898

+0

현재로서는 위에서 붙여 넣은 코드를 사용하여'est_bandwidth' 변수에 액세스 할 수 있습니다. 위의 문제 설명이 불완전한 경우 해당 설명을 업데이트하십시오. 또는 더 나은 방법은 문제를 재현하는 jsFiddle을 설정하는 것입니다. –

+0

여기에 있습니다 : http://jsfiddle.net/4DY5C/1/ est_bandwidth 대신 banda_stimata를 참조해야합니다. 코드는 출처 중 대역폭 .js에 있습니다. – user1903898