锁属性描述

Version >= 五

可以锁定属性的描述符,因此不能对其进行任何更改。仍然可以正常使用该属性,从中分配和检索值,但任何重新定义它的尝试都将引发异常。

属性描述符的 configurable 属性用于禁止对描述符进行任何进一步更改。

var obj = {};

// Define 'foo' as read only and lock it
Object.defineProperty(obj, "foo", { 
    value: "original value", 
    writable: false, 
    configurable: false
});
 
Object.defineProperty(obj, "foo", {writable: true});

将抛出此错误:

TypeError:无法重新定义属性:foo

该属性仍然是只读的。

obj.foo = "new value";
console.log(foo);

控制台输出

原始价值