如果我這樣寫:將類屬性設置爲一個函數 - 當類的實例被創建時函數會被調用嗎?
function thing() {
this.timer = Date.now();
}
將Date.now()
回我做每一次我做一個,或者只是回頭率腳本加載時間的類的實例的時候?
對不起noob問題。
如果我這樣寫:將類屬性設置爲一個函數 - 當類的實例被創建時函數會被調用嗎?
function thing() {
this.timer = Date.now();
}
將Date.now()
回我做每一次我做一個,或者只是回頭率腳本加載時間的類的實例的時候?
對不起noob問題。
構造的主體每次調用它的時候執行。就像任何其他功能一樣。由於構造函數的主體調用Date.now
,因此每次都會調用它。
如果它不是每次都執行,那麼每個實例都會共享所有相同的屬性......這將會擊敗它的重點!
但是,您可能一直在考慮thing.prototype
。如果設置timer
作爲一個屬性,它會不爲每個實例評估,並且每個實例都將共享相同的屬性(因此相同的值):
thing.prototype.timer = Date.now(); // Not what you want!
看一看this example。注意前兩次是不同的,後兩次是相同的。
是它會返回你做一個實例的時候,
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);
@LayTaylor感謝您的編輯:) –