Javascript定义常量对象属性

标签 javascript

我想要一个不可变的对象字段。我试过:

const a = 1;
var o = {
   x: 'This is mutable',
   y: a // This should not be mutable.
};
o.y = 'Changed';
console.log(o);

字段 y 被重新分配。
有什么办法可以做到这一点吗?

最佳答案

使用Object.defineProperty()并将configurable设置为false。

var o = {
    x: 'This is mutable'
};
Object.defineProperty(o, "y", { configurable: false, writable: false });

console.log(o);

o.y 的行为就像单独调用 Object.freeze 一样。

关于Javascript定义常量对象属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48925107/

相关文章:

javascript - CSS "overflow-x:hidden"与浏览器冲突 Ctrl+F 水平移出屏幕文字高亮

javascript - Html2canvas/jspdf 裁剪图片

javascript - 每次我更改 $(window).width() 时运行我的代码

javascript - Html 通过 jquery/javascript 在 iphone 上保持键盘可见

javascript - JQuery mousedown 与 setInterval 无限

javascript递归字符串连接

javascript - 当事件不是来自 ng-repeat 中的元素(即不是 ng-click)时,如何从 ng-repeat 获取值

javascript - 实例方法在 Sequelize 4 上不起作用

javascript - jQuery 没有按我的预期工作

javascript - 如何解决这个简单的 jQuery 问题?