首先,我问是否可以:如何使用 const 关键字创建 Javascript 常量作为对象的属性? https://stackoverflow.com/questions/10843572/how-to-create-javascript-constants-as-properties-of-objects-using-const-keyword
现在,我要问:为什么?对我来说,答案似乎是“只是因为”,但做这样的事情会非常有用:
var App = {}; // want to be able to extend
const App.goldenRatio= 1.6180339887 // throws Exception
为什么在激活对象上设置的常量可以工作,但在其他任何对象上设置时却不起作用?
如果可能的话,会造成什么样的损害?
目的是什么const
,如果不是为了防止公共 API 被更改呢?
如果您希望在现代浏览器中获得不可更改的值,请使用defineProperty https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/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
如果你没有通过writable:true
在选项中defineProperty
它默认为false
,从而默默地忽略您尝试对该属性进行的任何更改。另外,如果你没有通过configurable:true
那么它默认为false
并且您不能删除该属性。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)