2013-07-02 53 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