2016-03-02 50 views
0

我有一個JavaScript函數具有靜態變量:如何使用與功能的靜態變量const關鍵字(ECMA 6)在JavaScript

function Constants() { 

} 

Constants.i = '1'; 

現在根據ECMA 6,我們有const關鍵字。使用這個我們可以使一個變量成爲不可變的。

我無法找到如何使用const關鍵字與功能的靜態變量,如果我使用如下它不加載功能:

const Constant.i = '1'; 

這將是非常有益的,如果任何人都可以提出適當的同樣的方式。

+0

有在JavaScript中沒有靜態變量。你有什麼是*財產*。有辦法使它不可寫,但不能使用像'const'這樣的關鍵字或聲明。 – Bergi

+0

'const Constant.i ='1';'它會引發一個錯誤。可能它會幫助你[Object.defineProperty](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty) –

+0

'const'不會產生一個不可變的變量,它只是確保參考值不會改變。 – Oliver

回答

1

const僅適用於變量,不適用於對象(或函數)屬性。

正如上面提到的,你可以使用Object.defineProperty定義不能改變一個對象屬性:

function Constants() { 

} 

Object.defineProperty(Constants, 'i', { 
    value: '1', 
    writable: false, // this prevents the property from being changed 
    enumerable: true, // this way, it shows up if you loop through the properties of Constants 
    configurable: false // this prevents the property from being deleted 
}); 
相關問題