object.isextensible()检测对象当前是否可扩展,返回布尔值;仅判断能否添加新属性,与冻结、密封无关,不涉及属性存在性或可写性。

Object.isExtensible() 用来检测一个对象是否**当前处于可扩展状态**——也就是能否动态添加新属性。它返回布尔值:true 表示可以添加属性,false 表示不能。
基本用法很简单
直接传入目标对象即可:
const obj = {};
console.log(Object.isExtensible(obj)); // true
Object.preventExtensions(obj);
console.log(Object.isExtensible(obj)); // false
注意它只看“当前”扩展性
这个方法不关心对象是否被冻结(Object.freeze)或密封(Object.seal),只判断是否允许新增属性:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
-
Object.freeze(obj)和Object.seal(obj)都会让isExtensible返回false - 但反过来,
isExtensible === false并不意味着属性不可写或不可配置(比如仅调用preventExtensions后,已有属性仍可修改、删除)
和 in 操作符、hasOwnProperty 的区别
Object.isExtensible 不检查属性是否存在,也不管属性是否可枚举:
-
'prop' in obj判断属性是否在原型链上存在 -
obj.hasOwnProperty('prop')判断自有属性是否存在 -
Object.isExtensible(obj)只回答:“现在还能不能给它加新属性?”
常见使用场景
适合在封装工具函数或库时做安全校验:
- 向对象批量赋值前,先确认它没被禁止扩展,避免静默失败
- 实现深拷贝或合并逻辑时,跳过不可扩展的对象,改用其他方式处理
- 配合
Object.preventExtensions做运行时约束,再用isExtensible验证结果
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










