2016-11-08 45 views
1

ES5發佈之前javascript中如何實現常量?Javascript中的常量模式

目前還沒有get/set的東西,沒有writable財產,沒有const一句話,沒有Object.freeze的東西,據我所知,所以我怎麼能做出自己的常數,它不能被改變?

等,例如,Math.PI

enter image description here

+6

你只是*沒有修改你的變量...?通常通過使用所有大寫名稱非正式地「強制執行」。 – deceze

+0

@deceze你確定嗎? – DanilGholtsman

+1

返回原始值的函數也可以防止意外覆蓋。 – Bergi

回答

4

如何是恆定的,如ES5之前用JavaScript實現Math.PI被釋放?

即使ES3知道財產屬性 - 請參閱the spec中的第8.6.1節。有ReadOnly,DontEnum,DontDeleteInternal

事實上,對於Math.PI財產的規範說「此屬性的屬性{DontEnum,DontDelete,只讀}。

然而,人們可以(而且還可以)覆蓋整個Math物體另一個。

我怎樣才能使自己的常數,不能改變?

你不能。沒有辦法使變量或對象不變,因爲您需要分別等待ES6(const)和ES5(Object.freeze)。

開發者紀律是阻止常量被覆蓋的原因。通常,風格指南包括它們的標準,如全大寫的名稱。

+0

謝謝!一直想着它 – DanilGholtsman