属性描述符是JavaScript中定义对象属性行为的配置项,分为数据描述符(含value/writable)和访问器描述符(含get/set),共用enumerable和configurable字段,通过Object.defineProperty等方法设置,默认值需特别注意。

属性描述符是 JavaScript 中用于定义对象属性行为的一组配置项,它决定了属性是否可读、可写、可枚举、可配置,以及它的值或访问器函数。通过描述符,你可以精细控制属性的特性,比如让某个属性变成只读、不可删除,或者定义 getter/setter。
属性描述符分为两类,不能混用:
value 和 writable,用来定义普通属性的值和写权限;get 和 set,用来定义 getter/setter 行为,没有 value 或 writable。每个描述符还共用两个基础字段:enumerable(是否出现在 for...in 或 Object.keys() 中)和 configurable(是否能被删除、是否能修改描述符本身)。
这是最直接的方式,适用于精确控制一个属性:
立即学习“Java免费学习笔记(深入)”;
const obj = {};
// 数据描述符:只读、不可枚举、不可配置
Object.defineProperty(obj, 'PI', {
value: 3.14159,
writable: false,
enumerable: false,
configurable: false
});
// 访问器描述符:带逻辑的 age 属性
let _age = 25;
Object.defineProperty(obj, 'age', {
get() { return _age; },
set(val) { if (val > 0) _age = val; },
enumerable: true,
configurable: true
});适合初始化对象时统一设置多个属性的描述符:
const person = {};
Object.defineProperties(person, {
name: {
value: 'Alice',
writable: true,
enumerable: true,
configurable: true
},
birthYear: {
get() { return 1990; },
enumerable: false,
configurable: false
}
});用 Object.getOwnPropertyDescriptor 查看单个属性的完整描述符:
const obj = { x: 1 };
Object.defineProperty(obj, 'y', { value: 2, writable: false });
console.log(Object.getOwnPropertyDescriptor(obj, 'x'));
// { value: 1, writable: true, enumerable: true, configurable: true }
console.log(Object.getOwnPropertyDescriptor(obj, 'y'));
// { value: 2, writable: false, enumerable: true, configurable: true }注意:普通对象字面量创建的属性默认都是 writable: true、enumerable: true、configurable: true;而使用描述符显式定义时,未指定的字段会默认为 false(比如只写 value,其他三个就都是 false)。
基本上就这些。描述符不复杂但容易忽略默认值差异,尤其是 configurable: false 后无法再改回 true,也删不掉该属性——这点要特别小心。
以上就是javascript中的属性描述符是什么_如何配置属性?的详细内容,更多请关注php中文网其它相关文章!
java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号