Javascript对象变量常量

Javascript对象变量常量,javascript,Javascript,是否可以使部分或全部对象变量保持不变?我尝试使用const关键字,但出现错误 const testVar = { const x : 777 , y : 888 }; 错误:未捕获的语法错误:意外的标识符- 常量testVar={x:777,y:888} 冻结(testVar) 希望这会有所帮助。试试这个- 常量testVar={x:777,y:888} 冻结(testVar) 希望这会有所帮助。有多种方法可以使对象的属性不可变。下面提到了其中的几个 使用Object.freeze()函数 O

是否可以使部分或全部对象变量保持不变?我尝试使用const关键字,但出现错误

const testVar = { const x : 777 , y : 888 };
错误:未捕获的语法错误:意外的标识符- 常量testVar={x:777,y:888}

冻结(testVar)

希望这会有所帮助。

试试这个- 常量testVar={x:777,y:888}

冻结(testVar)


希望这会有所帮助。

有多种方法可以使对象的属性不可变。下面提到了其中的几个

使用Object.freeze()函数
Object.freeze()
函数防止更改对象属性。您将无法更改对象的现有属性,也无法添加新属性

consttestvar={x:777,y:888};
冻结(testVar);
testVar.x=2;

log(testVar)有多种方法可以使对象的属性不可变。下面提到了其中的几个

使用Object.freeze()函数
Object.freeze()
函数防止更改对象属性。您将无法更改对象的现有属性,也无法添加新属性

consttestvar={x:777,y:888};
冻结(testVar);
testVar.x=2;

log(testVar)
关键字
const
不会使“深层结构”保持不变。在您的情况下,它只会阻止完全重新分配


其他答案所讨论的
Object.freeze()
对于深层结构也不起作用(或者它将被称为
deepFreeze()
const
关键字不会使“深层结构”保持不变。在您的情况下,它只会阻止完全重新分配

其他答案所讨论的
Object.freeze()
对于深层结构也不起作用(或者它将被称为
deepFreeze()
,您可以使用它,或者它将允许您设置:

  • 可写
    属性描述符设置为
    false
    ,以禁止对属性进行赋值
  • 可配置
    属性描述符设置为
    false
    ,以禁止删除属性
consttestvar={y:888};
Object.defineProperty(testVar,“x”,{
可写:false,
可配置:false,
可枚举:true,//在打印对象时显示
价值:777
});
log(testVar);
testVar.x=100;
testVar.y=200;
log(testVar);
删除testVar.x;
删除testVar.y;
console.log(testVar);
您可以使用或设置:

  • 可写
    属性描述符设置为
    false
    ,以禁止对属性进行赋值
  • 可配置
    属性描述符设置为
    false
    ,以禁止删除属性
consttestvar={y:888};
Object.defineProperty(testVar,“x”,{
可写:false,
可配置:false,
可枚举:true,//在打印对象时显示
价值:777
});
log(testVar);
testVar.x=100;
testVar.y=200;
log(testVar);
删除testVar.x;
删除testVar.y;

console.log(testVar);
否。你在这方面的实际目标是什么?看一看,或者这是否回答了你的问题?@D.Pardal,视情况而定。否。你在这方面的实际目标是什么?看一看,或者这是否回答了你的问题?@D.Pardal,视情况而定。
冻结
?这与这个问题有什么关系?@vsync“有可能使部分或全部对象变量保持不变吗?”在我看来是“如何使部分或全部对象属性不可变”(或至少不可重新分配)@vsync:Dude..,你们两个可能都错了..OP肯定能为他/她说话。大惊小怪是没有用的。如果你认为你的答案/猜测更合适,就把它作为一个答案发布。有可能使部分或全部对象变量保持不变吗?我不知道为什么每个人都会感到困惑。OP放置
const
关键字的事实以前,对象的属性只意味着一件事,那就是OP正在尝试使对象属性不可变。感谢所有的帮助。我认为freeze()非常适合解决我的问题,因为我不希望以后修改对象
freeze
?它与这个问题有什么关系?@vsync”有可能使某些或所有对象变量保持不变吗?”我读到“如何使某些或所有对象属性不可变”(或至少不可重新分配)@vsync:Dude..,你们两个可能都错了..OP肯定能为他/她说话。大惊小怪是没有用的。如果你认为你的答案/猜测更合适,就把它作为一个答案发布。有可能使部分或全部对象变量保持不变吗?我不知道为什么每个人都会感到困惑。OP放置
const
关键字的事实在此之前,对象的属性只意味着一件事,那就是OP正在尝试使对象属性不可变。感谢所有的帮助。我认为freeze()非常适合解决我的问题,因为我不希望以后修改对象