对象密封限制新增属性、删除属性和重新配置属性,但允许修改已有可写属性的值;它比不可扩展多禁删除,比冻结少禁改值,适用于结构稳定而内容需可变的场景。
JavaScript 中的 对象密封(sealing) 主要是为了在不冻结对象的前提下,防止意外修改对象的结构——也就是禁止新增或删除属性,同时保留对已有属性值的修改能力。
调用 Object.seal(obj) 后,对象会进入“密封”状态,以下操作会被阻止:
obj.newProp = 1 无效,严格模式下抛出错误)delete obj.existingProp 失败,严格模式下报错)
配置属性(即不能改 configurable: false,所以也不能再用 Object.defineProperty 改 descriptor 中的 configurable 或 writable)但注意:已存在的可写属性(writable: true)的值仍可修改,比如 obj.name = "Alice" 是允许的。
三者是递进关系,限制力度逐步增强:
Object.preventExtensions()):只禁新增,允许删、允许改值、允许改 descriptorObject.seal()):禁新增 + 禁删除,但仍允许改已有属性的值(只要 writable)Object.freeze()):禁新增 + 禁删除 + 禁改值(所有属性设为 writable: false),是最严格的保护密封适合那些“结构应稳定、但内容可变”的对象,比如配置项、常量集合、模块导出对象:
config.baseUrl 被删导致运行时错误)它比 freeze 更灵活,比默认对象更安全,是一种轻量级的结构防护。
基本上就这些——密封不是为了彻底锁死,而是守住“形状”,放开“内容”。
# javascript
# java
# 区别
# 为什么
相关栏目:
【
Google疑问12 】
【
Facebook疑问10 】
【
网络优化76771 】
【
技术知识130152 】
【
IDC云计算60162 】
【
营销推广131313 】
【
AI优化88182 】
【
百度推广37138 】
【
网站推荐60173 】
【
精选阅读31334 】
相关推荐:
Win11怎么设置虚拟内存最佳大小_Windows11性能选项自定义分页文件
C++中引用和指针有什么区别?(代码说明)
c++怎么调用nana库开发GUI_c++ 现代风格窗口组件与事件处理【实战】
PythonGIL机制理解_多线程限制解析【教程】
Win11怎么设置开机自动连接宽带_Windows11创建拨号连接计划任务
c++中的Tag Dispatching是什么_c++利用标签分发优化函数重载【元编程】
如何在 ACF 中正确更新嵌套多层的 Group 字段子字段
Mac如何修改Hosts文件?(本地开发与屏蔽网站)
Win10如何卸载WindowsDefender_Win10卸载Defender教程【方法】
Linux怎么禁止Root用户远程登录_Linux系统SSH加固与安全设置【教程】
php怎么下载安装后设置错误日志_phpini log配置教程【汇总】
php本地部署后session无法保存_session存储路径与权限设置技巧【技巧】
如何使用正则表达式提取以编号开头、后跟多个注解的完整代码块
php嵌入式日志记录怎么实现_php将硬件数据写入本地日志文件【指南】
Win11怎么关闭开机声音_Win11系统启动提示音静音【教程】
微信里的php文件怎么变mp4_微信接收php转mp4操作步骤【操作】
Win11怎么设置鼠标宏_Win11鼠标按键自定义编程教程【详解】
如何使用Golang实现Web表单数据绑定_自动映射字段到结构体
Python脚本参数接收_sys与argparse解析【指导】
Win11怎么卸载Photos应用_Win11卸载Photos应用方法【教程】
如何在 Go 应用中实现自动错误恢复与进程重启机制
Win11无法识别耳机怎么办_解决Win11插耳机没声音问题【步骤】
Linux怎么查找死循环进程_Linux系统负载分析与进程彻底结束【教程】
怎么将XML数据可视化 D3.js加载XML
php打包exe后无法读取环境变量_变量配置方法【教程】
php嵌入式多设备通信怎么实现_php同时管理多个串口设备【操作】
Win11如何关闭游戏模式 Win11禁用Xbox Game Bar录制【优化】
如何在 IIS 上为 ASP.NET 6 应用排除特定目录并交由 PHP 处理
如何更改Windows资源管理器的默认启动位置?(快速访问/此电脑)
Win11右键反应慢怎么办 Win11优化右键菜单加载速度【技巧】
如何用正则表达式精确匹配最多含一个换行符的起止片段
如何在Golang中捕获HTTP服务器错误_GolangHTTP Handler中error处理
Mac系统更新下载慢或失败怎么办_解决macOS升级问题【方法】
windows如何禁用驱动程序强制签名_windows高级启动设置指南
电脑的“网络和共享中心”去哪了_Windows 11新版网络设置指南【新手】
如何在Golang中写入JSON文件_保存结构体数据到文件
php8.4匿名类怎么用_php8.4匿名类创建与使用场景【介绍】
Win11相机打不开提示错误怎么修_相机权限开启与驱动修复【影像修复】
Win11怎么开启HDR模式_Windows 11高动态范围显示设置指南【详解】
Windows 11如何查看系统激活密钥_Windows 11使用CMD或PowerShell命令找回Product Key
php8.4如何调用com组件_php8.4windows下com操作指南【教程】
Win11怎么设置任务栏透明_Windows11使用工具美化任务栏
Golang如何测试HTTP中间件_Golang HTTP中间件功能测试实践
Go 中实现 Python urllib.quote() 功能的等效方法
Windows10电脑怎么设置文件权限_Win10安全选项卡所有者修改
Win11怎么设置声音输出设备_Windows11音量合成器单独调节应用
Windows10任务栏图标变成白色文件_Win10重建图标缓存修复方法
Win11怎么关闭定位服务_保护Win11位置隐私设置指南【详解】
如何使用Golang实现路由分组管理_Golang路由分组与权限控制方法
LINUX下如何配置VLAN虚拟局域网_在LINUX交换机与服务器上的实现
2025-12-21
致胜网络推广营销网专注海外推广十年,是谷歌推广.Facebook广告全球合作伙伴,我们精英化的技术团队为企业提供谷歌海外推广+外贸网站建设+网站维护运营+Google SEO优化+社交营销为您提供一站式海外营销服务。