如果我写这个:
function thing() {
this.timer = Date.now();
}
Date.now()
每次我创建一个类的实例时会返回我创建一个类的时间,或者只是继续返回加载脚本的时间?
对不起菜鸟问题。
如果我写这个:
function thing() {
this.timer = Date.now();
}
Date.now()
每次我创建一个类的实例时会返回我创建一个类的时间,或者只是继续返回加载脚本的时间?
对不起菜鸟问题。
每次调用它时都会执行构造函数的主体。就像任何其他功能一样。由于您的构造函数的主体调用Date.now
,因此每次都会调用它。
如果不是每次都执行,每个实例都将共享所有相同的属性……这有点违背了它的意义!
但是,您可能一直在考虑thing.prototype
. 如果您将其设置timer
为它的属性,则不会为每个实例评估它,并且每个实例将共享相同的属性(因此具有相同的值):
thing.prototype.timer = Date.now(); // Not what you want!
看看这个例子。注意前 2 次是不同的,而后 2 次是相同的。
是的,它会返回您创建实例的时间,
function thing() {
this.timer = Date.now();
console.log(this.timer)
}
//这两者都会记录不同的时间。
new thing();
new thing()
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);