私のアプリケーションでは、アプリケーションのさまざまな場所で設定されるいくつかのプロパティを持つオブジェクトがあります。オブジェクトのプロパティへのアクセス
私のプロトタイプ関数の1つには、タイマーを更新する間隔で実行する関数があり、その関数ではthisTimeを設定する必要があります。問題は、これは起こらないということです。その理由は、this.theTime
がオブジェクトではなく関数自体を指しているからです。
以下は、私のコードの2つのバージョンで、いずれも動作しません。私のためのヒント?
// 1.
function changeTime() {
this.theTime = setTime(time);
time.setSeconds(time.getSeconds()+1);
p1.html(this.theTime);
}
interval = setInterval(changeTime(), 1000);
// 2.
function changeTime(theTime) {
theTime = setTime(time);
time.setSeconds(time.getSeconds()+1);
p1.html(theTime);
}
interval = setInterval(function() { changeTime(this.theTime); }, 1000);
...
あまりにもそれがより明確に、上記の機能は、タイマーを更新(例えば00:00:01
- 。>00:00:02
)毎秒、と私はthis.theTime
は時間で更新することにしたいです。
タイマーが停止すると(別のプロトタイプ関数で発生する)、タイマーが何時に停止したかを確認できますが、今のようにthis.theTime
がデフォルト値です。 objectsプロパティを更新します。代わりに、上記の関数のthis.theTime
はローカル変数でなければなりません。
注:setTime()
は、上記の関数と同じプロトタイプ関数内に存在する別の関数です。
「this」はどのように設定する必要がありますか?あなたのコードは動作しませんが、それを修正する方法を正確に言うことは不可能であることは知らないままです。 'this'値は各関数呼び出し時に設定されます。どの機能においても永久に固定されたものではありません。 – Pointy
'setTime()'はあなたが書いた関数か、JS関数 'Date.setTime()'を使用しようとしていますか? –
@JasonCraigもう少し多くのものを整理するためにもう少し質問を編集しました。 –