Javascript 中的恒定模式
Constant pattern in Javascript
在 ES5
发布之前,javascript
中的常量是如何实现的?
据我所知,没有 get/set
东西,没有 writable
属性,没有 const
字,没有 Object.freeze
东西,那怎么办我可以创建自己的常量,不能更改?
例如,Math.PI
How were constant such as Math.PI
implemented in javascript before ES5 was released?
甚至 ES3 也知道 属性 属性 - 请参阅 the spec 中的第 8.6.1 节。有 ReadOnly
、DontEnum
、DontDelete
和 Internal
。
事实上,对于 Math.PI
属性 规范说“这个 属性 具有属性 { DontEnum, DontDelete, ReadOnly }。
但是,可以(并且仍然可以)用另一个覆盖整个 Math
对象。
How I could make my own constant, which can't be changed?
你不能。没有办法使变量或对象不可变,因为你需要分别等到 ES6 (const
) 和 ES5 (Object.freeze
)。
开发人员纪律是防止常量被覆盖的全部原因。通常,风格指南包括它们的标准,例如全大写的名称。
在 ES5
发布之前,javascript
中的常量是如何实现的?
据我所知,没有 get/set
东西,没有 writable
属性,没有 const
字,没有 Object.freeze
东西,那怎么办我可以创建自己的常量,不能更改?
例如,Math.PI
How were constant such as
Math.PI
implemented in javascript before ES5 was released?
甚至 ES3 也知道 属性 属性 - 请参阅 the spec 中的第 8.6.1 节。有 ReadOnly
、DontEnum
、DontDelete
和 Internal
。
事实上,对于 Math.PI
属性 规范说“这个 属性 具有属性 { DontEnum, DontDelete, ReadOnly }。
但是,可以(并且仍然可以)用另一个覆盖整个 Math
对象。
How I could make my own constant, which can't be changed?
你不能。没有办法使变量或对象不可变,因为你需要分别等到 ES6 (const
) 和 ES5 (Object.freeze
)。
开发人员纪律是防止常量被覆盖的全部原因。通常,风格指南包括它们的标准,例如全大写的名称。