如果我写这个:
function thing() {
this.timer = Date.now();
}
每次创建一个类的实例时,Date.now()
会返回我创建类实例的时间,还是只返回加载脚本的时间?
对于noob问题抱歉。
答案 0 :(得分:2)
每次调用构造函数的主体都会执行。就像任何其他功能一样。由于构造函数的主体调用Date.now
,因此每次都会调用它。
如果每次都没有执行,那么每个实例都会共享所有相同的属性......这会使它失败!
但是,您可能一直在考虑thing.prototype
。如果将timer
设置为该属性,则不将针对每个实例进行评估,并且每个实例将共享相同的属性(因此具有相同的值):
thing.prototype.timer = Date.now(); // Not what you want!
看看this example。注意前两次是不同的,第二次是相同的。
答案 1 :(得分:1)
是它会返回您创建实例的时间,
function thing() {
this.timer = Date.now();
console.log(this.timer)
}
//两者都会记录不同的时间。
new thing();
new thing()
答案 2 :(得分: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);
答案 3 :(得分:0)