在babel-preset-stage-0
,我們可以聲明靜態類變量如下:ES6安全使用靜態類變量作爲Map的關鍵?
class Constants {
static COUNTRY = Object.freeze({
NAME: 'Germany',
DESCRIPTION: 'placeholder',
})
}
是可以安全使用Constants.COUNTRY
作爲一個ES6 Map
或Set
的關鍵?
例如。
const map = new Map();
map.add(Constants.COUNTRY, something);
能夠保證所有的map.get(Constants.COUNTRY)
總是返回something
?
性能和使用字符串一樣好嗎? NavItem
也可以使用Constants.COUNTRY
作爲eventKey
(引導組件屬性)嗎?
將它聲明爲一個變量而不是一個類也更合適嗎? 即
const Constants = Object.freeze({
COUNTRY: Object.freeze({
NAME: 'Germany',
DESCRIPTION: 'placeholder',
})
})
只有當Constants.COUNTRY的值永遠不會改變,並且沒有人從地圖中移除該鍵時,才能保證始終返回您的數據。一個類的靜態只是一個變量,與你的'Constants'變量替代物無異。 – jfriend00
'Object.freeze'可以防止'Constants.COUNTRY'以任何方式被修改,但是可以將它重新分配給靜態類變量......所以我想後面的版本把它聲明爲一個常量Object比聲明更好它作爲一個班級。 – Avery235
'Object.freeze()'防止對象發生變化(這對地圖無關緊要,因爲它仍然是同一個對象)。 'Object.freeze()'不會阻止'Constants.COUNTRY =「hello」'這在訪問'map.get(Constants.COUNTRY)'時很重要。 – jfriend00