2016-04-15 102 views
1

我開始越來越多地使用Javascript工作,我偶然遇到以下問題。
我想根據我剛剛輸入的值來分配數值分配值時分配值

簡單的例子:

var Example = { 
    valueA : 100, 
    valueB : 20, 
    valueC : Example.valueA/Example.valueB 
} 

但是這給Example is undefinedvalueC線。我假設Example對象此時尚未準備好使用,它首先必須「完成」。

我可以這樣做:

var Example = { 
    valueA : 100, 
    valueB : 20, 
    valueC : -1 // Gets value later 
} 
Example.valueC = Example.valueA/Example.valueB 

在這個例子中,這將是完美的accaptable,但我在的情況下結束了,我將有很多這樣的「後初始化」的問題,或分配的值有點複雜(例如公式)。

可以像「簡單的例子」工作?我當前的解決方案感覺像是矯枉過正,我需要更優雅的東西,讀取代碼時讀取效果更好。

+0

啊,所以這是它叫什麼。沒有線索,謝謝。 – Martijn

回答

1

你可以使用一個getter

get語法綁定對象屬性到時該屬性擡頭將被調用的函數。

一個優點是,您可以將其他值分配給屬性valueAvalueB並獲得除法的實際結果。

var Example = { 
 
    valueA: 100, 
 
    valueB: 20, 
 
    get valueC() { 
 
     return this.valueA/this.valueB; 
 
    } 
 
}; 
 

 
document.write(Example.valueC);

+0

但是這會使'valueC'成爲一個函數?這將是我經常打電話給我的一個變量,難道不會有點緊張嗎? – Martijn

+0

是的,它是一個函數,但它的調用沒有括號,它的作用就像一個帶有值的變量。不要擔心打電話。 –