2

javascript在发布之前如何实现常量ES5

据我所知,没有get/set东西,没有writable财产,没有const文字,没有Object.freeze东西,我怎么能让自己的不变,不能改变?

比如,例如,Math.PI

在此处输入图像描述

4

1 回答 1

5

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

甚至 ES3 也知道属性属性 - 请参阅规范中的第 8.6.1 节。有ReadOnly,和. DontEnum_DontDeleteInternal

实际上,对于该Math.PI属性,规范说“该属性具有属性 { DontEnum, DontDelete, ReadOnly }。

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

我怎样才能使自己的常数,不能改变?

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

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

于 2016-11-08T15:03:45.890 回答