首页 > web前端 > js教程 > 正文

JS对象属性描述符_Configurable与Writable

betcha
发布: 2025-11-17 20:04:02
原创
433人浏览过
writable 控制属性值是否可修改,configurable 控制属性是否可删除或重新配置;前者设为 false 时赋值无效或报错,后者为 false 时无法修改描述符或删除属性,且不可逆。两者结合可用于创建不可变属性,如库中的安全配置项。

js对象属性描述符_configurable与writable

在JavaScript中,对象的属性不仅仅是键值对,它们还拥有与之关联的属性描述符。其中,configurablewritable 是两个重要的布尔型描述符,控制着属性能否被修改或删除。理解它们的作用和区别,有助于更好地管理对象的结构和安全性。

Writable:控制属性值是否可修改

writable 描述符决定一个属性的值是否可以被重新赋值。

writable: false 时,尝试修改该属性的值将不会生效(在非严格模式下静默失败,在严格模式下抛出错误)。

示例:

const obj = {};
Object.defineProperty(obj, 'name', {
  value: 'Alice',
  writable: false
});

obj.name = 'Bob'; // 修改无效
console.log(obj.name); // 输出: Alice
登录后复制

如果使用严格模式,上述赋值会抛出 TypeError。

注意:const 声明的变量不可重新赋值,但这与对象属性的 writable 无关。const 只作用于变量绑定,不影响对象内部属性的 writable 状态。

Configurable:控制属性描述符是否可配置

configurable: false 意味着你不能再用 Object.defineProperty() 修改该属性的任何描述符,包括 writable、enumerable、configurable 自身,也不能删除该属性。

一旦设置为 configurable: false,就无法再变回 true。

北极象沉浸式AI翻译
北极象沉浸式AI翻译

免费的北极象沉浸式AI翻译 - 带您走进沉浸式AI的双语对照体验

北极象沉浸式AI翻译 0
查看详情 北极象沉浸式AI翻译

示例:

const obj = {};
Object.defineProperty(obj, 'age', {
  value: 25,
  configurable: false
});

// 尝试删除
delete obj.age; // 无效
console.log(obj.age); // 仍然输出: 25

// 尝试修改 writable
Object.defineProperty(obj, 'age', { writable: true }); 
// 抛出 TypeError: Cannot redefine property: age
登录后复制

configurable 为 false 时,唯一可以改变的是将 writable: true 改为 false,反向则不行。

两者的关键区别

  • writable 只控制属性值能否被更改
  • configurable 控制属性本身能否被删除或进一步配置
  • 即使 writable: false,只要 configurable: true,仍可通过 defineProperty 将其改为 true
  • 但若 configurable: false,则大多数描述符锁定,不可逆

实际应用场景

这两个描述符常用于创建不可变对象安全的API接口

例如,库开发者可能希望某个配置属性不被用户随意修改或删除:

const config = {};
Object.defineProperty(config, 'version', {
  value: '1.0.0',
  writable: false,
  configurable: false
});
登录后复制

这样既防止值被篡改,也防止属性被删除或重新定义。

基本上就这些。掌握 writable 和 configurable 的行为,能让你更精细地控制对象属性的行为。

以上就是JS对象属性描述符_Configurable与Writable的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号