0

これを書くと:

function thing() {
    this.timer = Date.now();
}

クラスのインスタンスを作成するたびにインスタンスを作成した時間を返しますDate.now()か、それともスクリプトがロードされた時間を返し続けますか?

ノブの質問で申し訳ありません。

4

4 に答える 4

2

コンストラクターの本体は、呼び出すたびに実行されます。他の機能と同じように。コンストラクターの本体が を呼び出すためDate.now、毎回呼び出されます。

毎回実行されなかった場合、すべてのインスタンスがすべて同じプロパティを共有します...これは、そのポイントを無効にするでしょう!

しかし、あなたは考えたことがあるかもしれませんthing.prototypetimerそのプロパティとして設定すると、インスタンス化ごとに評価されず、すべてのインスタンスが同じプロパティ (したがって同じ値) を共有します。

thing.prototype.timer = Date.now(); // Not what you want!

この例を見てください。最初の 2 回が異なっていて、次の 2 回が同じであることに注目してください。

于 2013-01-11T14:22:12.307 に答える
1

はい、インスタンスを作成した時刻が返されます。

function thing() {
    this.timer = Date.now();
    console.log(this.timer)
}

//これは両方とも異なる時間を記録します。

new thing();
new thing()
于 2013-01-11T14:19:58.770 に答える
1

this.timerthingインスタンス化された時刻の値を常に返します。が呼び出されたときにそのインスタンスに対して 1 回設定され、new thing()明示的にリセットしない限り、常にこの値を返します。

フィドル: http://jsfiddle.net/sajjansarkar/QrUWR/1/

function thing() 
{
    this.timer = Date.now();
}

var o1 = new thing();
alert(o1.timer);
alert(o1.timer);

var o2 = new thing();
alert(o2.timer);
alert(o1.timer);
于 2013-01-11T14:21:17.490 に答える
0

仕様から:

このnow関数は、への呼び出しが発生したUTC日時を指定する時刻値であるNumber値を返しますnow

それで、

Date.now()クラスを作成するたびに、クラスのインスタンスを作成した時間を返します

はい。

于 2013-01-11T14:19:38.477 に答える