グローバル変数でアプリケーション変数にアクセスしたいjavascriptアプリケーションを作成しています。参照によるJavascriptアクセスメンバー変数
//Initialize
var myApp=new app();
//Count is zero here, as expected since app is asynchronous
console.log(myApp.count);
//But 5 seconds later, count should have a non-zero value
setTimeout(function(){
console.log(myApp.count);
}, 5000);
とアプリケーション・コード:
//Application code
function app() {
var count=0;
setTimeout(function(){
console.log("Setting count to 10");
count=10;
}, 2500);
//Member variable for count
this.count=count;
}
ここjsfiddleを参照してください: https://jsfiddle.net/o4db2ep4/
私が欲しいゼロにするために、カウントの最初のアクセスのためであるが、このような何か2番目の値は10でなければなりません。
私はmyAppを宣言している時点でカウントをゼロ。スコープと組み合わせた値/参照問題によるパスのようなもので、私はこれに苦労しています。
動的なapp.countへの参照を取得するにはどうすればよいですか。つまり、割り当て時の値ではなく、countの現在の値が常に含まれていますか?これが不可能な場合は、この問題をどのように再考すべきですか?
'setTimeout'は、スクリプトを一時停止しません。あなたが提供する関数を後で実行するようにスケジュールするだけなので、 'this.count = count'は' setTimeout'コールバックが始まるずっと前に実行されます。 –
はい、私はこれを理解しています。しかし、app.countがthis.countへのポインタであれば、いつ実行されるかにかかわらず、常に同じ値を参照します。 – jrel
JavaScriptは厳密に値渡し/割り当てです。変数/プロパティは別の変数/プロパティを参照できません。 –