如何完全限制const对象属性的修改

时间:2017-05-12 06:35:45

标签: javascript

即使使用严格模式,我也可以更新对象变量。 怎么可能?是否可以创建常量对象?

"use strict";

const x = {a:"sss"}
x.a = "k"
console.log(x)

输出:

{ a: 'k' }

2 个答案:

答案 0 :(得分:5)

好的 - 所以需要使用Object.freeze调用t使对象不可更改。 即使是严格模式也不是必需的。

const x = {a:"sss"}
Object.freeze(x);

x.a = "k"
console.log(x)

输出:

x.a = "k"
    ^

TypeError: Cannot assign to read only property 'a' of object '#<Object>'

答案 1 :(得分:5)

ES6 const不变性无关。

const仅创建一个只读引用,这意味着您无法为该对象重新分配另一个值。

const创建一个不可变binding并保证不会发生rebinding

const 变量上使用assignment operator会抛出 TypeError 异常:

简短的例子:

&#13;
&#13;
const x = {a:"sss"}
x={a:"k"}
console.log(x)
&#13;
&#13;
&#13;

您将看到以下消息:

  

&#34;未捕获的TypeError:分配给常量变量。&#34;