javascript
之前ES5
中的实施常量是如何释放的?
据我所知,没有get/set
内容,没有writable
属性,没有const
字,没有Object.freeze
内容,所以我如何才能使自己保持不变,哪些不能改变?
例如,Math.PI
答案 0 :(得分:5)
在ES5发布之前,如何在javascript中实现
Math.PI
这样的常量?
即使ES3知道属性属性 - 请参阅the spec中的第8.6.1节。有ReadOnly
,DontEnum
,DontDelete
和Internal
。
事实上,对于Math.PI
属性,规范说" 此属性具有{DontEnum,DontDelete,ReadOnly}属性。"
然而,人们可以(并且仍然可以)用另一个对象覆盖整个Math
对象。
如何制作自己的常数,哪些不能改变?
你做不到。没有办法让变量或对象不可变,因为你需要分别等到ES6(const
)和ES5(Object.freeze
)。
开发人员纪律阻止了常量被覆盖。通常,样式指南包括它们的标准,如全大写名称。