object.issealed()返回布尔值判断对象是否密封:对象不可扩展且所有自有属性configurable为false;null/undefined返回true;密封对象属性值仍可修改,而冻结对象还要求所有属性writable为false。

Object.isSealed() 用于判断一个对象是否被密封(sealed),即该对象是否不可扩展,且所有自有属性都为不可配置(configurable: false)。
什么是“密封对象”
密封对象 ≠ 冻结对象(frozen),也不等于只读对象。它有两点核心限制:
- 对象本身不可扩展(不能添加新属性)
- 所有自有属性的
configurable特性为false(不能删除、不能改描述符)
但注意:密封对象的属性值仍可修改(除非该属性本身是只读的)。
基本用法和返回值
调用方式很简单:
Object.isSealed(obj)
返回布尔值:true 表示对象已密封,false 表示未密封或不是对象(如 null、原始值会返回 true,见下文)。
Java JDK 25 来自 OpenJDK 官方归档,版本为 JDK 25,本条下载地址已指向官方 Windows x64 zip 安装包直链,适合调试旧项目或兼容旧版 Java 运行环境。
例如:
const obj = { a: 1 };
console.log(Object.isSealed(obj)); // false —— 默认对象不密封
Object.seal(obj);
console.log(Object.isSealed(obj)); // true
需要注意的边界情况
以下情况容易误判,需特别留意:
- null 或 undefined 传入时返回 true(因为它们不是对象,技术上“无法被密封”,所以判定为“已满足密封条件”)
- 数组也是对象,
Object.isSealed([])返回false;密封后返回true - 继承的属性不影响结果,只检查对象自身的属性和扩展性
- 如果对象有 accessor 属性(getter/setter),只要其
configurable为false,就符合密封要求
和 Object.isFrozen 的区别
密封 ≠ 冻结:
-
Object.isSealed()不关心属性是否可写(writable),只看是否可配置、是否可扩展 -
Object.isFrozen()要求更严格:所有属性writable和configurable都必须为false,且对象不可扩展
所以冻结的对象一定是密封的,但密封的对象不一定冻结。
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!










