0

如果我写这个:

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

Date.now()每次我创建一个类的实例时会返回我创建一个类的时间,或者只是继续返回加载脚本的时间?

对不起菜鸟问题。

4

4 回答 4

2

每次调用它时都会执行构造函数的主体。就像任何其他功能一样。由于您的构造函数的主体调用Date.now,因此每次都会调用它。

如果不是每次都执行,每个实例都将共享所有相同的属性……这有点违背了它的意义!

但是,您可能一直在考虑thing.prototype. 如果您将其设置timer为它的属性,则不会为每个实例评估它,并且每个实例将共享相同的属性(因此具有相同的值):

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.timer将始终返回thing实例化时间的值。当被调用时,它将为该实例设置一次,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函数返回一个 Number 值,它是指定调用 UTC 日期和时间的时间值now

所以,

Date.now()返回我每次创建类实例的时间

是的。

于 2013-01-11T14:19:38.477 回答