javascript
在发布之前如何实现常量ES5
?
据我所知,没有get/set
东西,没有writable
财产,没有const
文字,没有Object.freeze
东西,我怎么能让自己的不变,不能改变?
比如,例如,Math.PI
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
) 。
开发人员纪律是防止常量被覆盖的全部。通常,样式指南包括它们的标准,例如全大写名称。