Dan*_*man 2 javascript design-patterns constants ecmascript-3
释放javascript之前的实现常量如何ES5?
据我所知,这里没有get/set东西,没有writable财产,没有const文字,没有Object.freeze东西,那么如何使自己的常数不变呢?
例如, Math.PI
Math.PI在ES5发布之前,如何在JavaScript中实现常量?
甚至ES3也知道属性属性-请参见规范中的 8.6.1节。有ReadOnly,DontEnum,DontDelete和Internal。
实际上,对于该Math.PI属性,规范说明为“ 此属性具有属性{DontEnum,DontDelete,ReadOnly}。 ”
但是,一个人可以(并且仍然可以)Math用另一个对象覆盖整个对象。
我如何使自己的常数不变?
你不能。无法使变量或对象不可变,因为您需要分别等到ES6(const)和ES5(Object.freeze)。
开发人员的纪律是阻止常量被过度使用的全部。通常,样式指南包括针对它们的标准,例如全大写名称。