Javascript

时间:2016-11-08 14:44:23

标签: javascript design-patterns constants ecmascript-3

javascript之前ES5中的实施常量是如何释放的?

据我所知,没有get/set内容,没有writable属性,没有const字,没有Object.freeze内容,所以我如何才能使自己保持不变,哪些不能改变?

例如,Math.PI

enter image description here

1 个答案:

答案 0 :(得分:5)

  

在ES5发布之前,如何在javascript中实现Math.PI这样的常量?

即使ES3知道属性属性 - 请参阅the spec中的第8.6.1节。有ReadOnlyDontEnumDontDeleteInternal

事实上,对于Math.PI属性,规范说" 此属性具有{DontEnum,DontDelete,ReadOnly}属性。"

然而,人们可以(并且仍然可以)用另一个对象覆盖整个Math对象。

  

如何制作自己的常数,哪些不能改变?

你做不到。没有办法让变量或对象不可变,因为你需要分别等到ES6(const)和ES5(Object.freeze)。

开发人员纪律阻止了常量被覆盖。通常,样式指南包括它们的标准,如全大写名称。