Object.defineProperty 是你想要的。
例如:
var obj = {};
Object.defineProperty(obj, 'key', {
enumerable: false,
configurable: false,
writable: false,
value: 'static'
});
将用值定义“obj.key”:“静态”,它将是只读的。
- 可枚举表示在枚举对象的属性时会显示(或不显示)。
- 可写意味着如果你希望它是只读的,你会说假。不可写。
- 如果您不希望它从对象中删除,可配置为 false。
本质上,通过将它们全部设置为 false,您就是在对象上创建常量。顺便说一句,他们的默认值是假的。
如此有效地做到这一点:
Object.defineProperty(obj, 'property', { value: 'value'});
将在 'obj' 上创建一个名为 'property' 的常量,其值为 'value'。或者你可以这样做
function setConstant(obj, key, value)
{
Object.defineProperty(obj, key, {value: value });
}
var obj = {};
setConstant(obj, "constantName", "constantValue");
会让它非常易读。