2013-07-02 54 views
0

我想将我的对象的属性之一设置为常量。我如何使用property: value表示法来做到这一点?在对象中设置常量

var Hero = { 
    name: "Vasilli Zeitsev", 
    occupation: "sniper" 
} 

我想要名称是一个常量,但是做name: const 'Vasilli Zeitsev'似乎错误。

FYI:Javascript constants

+0

使用'Object.defineProperty'不允许它是可写的。直接从你提供的链接开始:'创建一个常量,它可以是声明它的函数的全局或局部的。“ - 我没有看到任何有关对象属性的信息 – Ian

回答

0

假设你的目标新的浏览器:
你可以用“Object.defineProperty”来设置的东西不能写。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty

Object.defineProperty(Hero, name, {value: "Vasilli Zeitsev", writable: false}) 
+0

definePeroperties也可能是相关的:https:// developer .mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperties?redirectslug = JavaScript%2FReference%2FGlobal_Objects%2FObject%2FdefineProperties –

+0

是一个六岁的浏览器,仍然被认为是“新“? – dandavis

+0

@dandavis OP正在尝试使用'const'。我假设'Object.defineProperty'在同一浏览器中可用 – Ian

1

const: Implemented in JavaScript 1.5, NES 6.0 (Netscape extension,C engine only)

如果你需要在一个对象字面定义一个只读属性,你可以尝试getter

var Hero = { 
    get name() {return "Vasilli Zeitsev"}, 
    occupation: "sniper" 
} 
+0

它看起来像['Object.defineProperty()'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/ Reference/Global_Objects/Object/defineProperty)可以重写一个getter值,所以它不是防弹的... – Teemu