Object.defineProperty()
函数允许您定义或修改对象的属性。它接收三个参数:要操作的对象,要操作的属性名称,以及一个包含属性描述符的对象。属性描述符对象可以包含以下属性:
configurable
: 如果设置为true
,则该属性可以通过delete
删除并重新定义,以及修改属性描述符。默认值为false
。enumerable
: 如果设置为true
,则该属性可以通过对象枚举方法(例如for...in
)访问。默认值为false
。value
: 属性的值。默认值为undefined
。writable
: 如果设置为true
,则该属性的值可以被修改。默认值为false
。get
: 一个只读访问器属性的 getter 函数。默认值为undefined
。set
: 一个只写访问器属性的 setter 函数。默认值为undefined
。
以下是使用 Object.defineProperty()
函数创建一个只读属性的示例:
let obj = {};
Object.defineProperty(obj, "readOnlyProp", {
value: "read only value",
writable: false
});
console.log(obj.readOnlyProp); // "read only value"
obj.readOnlyProp = "new value"; // ignored because writable is false
console.log(obj.readOnlyProp); // "read only value"
在此示例中,我们创建一个空对象 obj
,并使用 Object.defineProperty()
函数为该对象创建了一个名为 readOnlyProp
的只读属性。我们将 writable
属性设置为 false
,这意味着我们不能更改属性的值。在第一个 console.log()
语句中,我们尝试访问 readOnlyProp
属性,并打印其值。在第二个 console.log()
语句中,我们尝试更改 readOnlyProp
的值,但由于该属性是只读的,我们的修改会被忽略,仍然打印原始值。