![](/img/trans.png)
[英]How to create Javascript constants as properties of objects using const keyword?
[英]Why is it impossible to assign constant properties of JavaScript objects using the const keyword?
首先,我问是否有可能: 如何使用const关键字创建Javascript常量作为对象的属性?
现在,我要问:为什么? 对我来说,答案似乎是“仅仅因为”,但这样做是很有用的:
var App = {}; // want to be able to extend
const App.goldenRatio= 1.6180339887 // throws Exception
为什么在激活对象上设置的常量可以工作,但在其他对象上设置的常量却不能工作?
如果可能的话,会造成什么样的损害?
const
的目的是什么(如果不防止更改公共API)?
如果要在现代浏览器中使用defineProperty
更改的值,请使用defineProperty
创建不可写(也称为只读)属性:
var App = {};
Object.defineProperty(App,'goldenRatio',{value:1.6180339887});
console.log( App.goldenRatio ); // 1.6180339887
App.goldenRatio = 42;
console.log( App.goldenRatio ); // 1.6180339887
delete App.goldenRatio; // false
console.log( App.goldenRatio ); // 1.6180339887
如果未在defineProperty
选项中传递writable:true
,则默认为false
,因此将无提示地忽略您对该属性所做的任何更改。 此外,如果不传递configurable:true
则默认为false
并且您不能删除该属性。
除了const
不受跨浏览器支持(这是ES6功能)外, const App.goldenRatio= 1.6180339887
出于同样的原因var App.goldenRatio= 1.6180339887
无效:您正在设置对象属性,因此在其前面加上var
或const
关键字是语法错误。
var MY_CONSTANT =“某些值”; 您可以使用诸如ALL_CAPS之类的约定来表明某些值不应被修改
要回答您要问的问题并说永不使用const
。 解释器对此不做任何事情。 它所做的所有事情都是在使开发人员误以为他/她可以假设值永远不会改变,这与const
关键字不存在的可能性const
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.