Object.isExtensible() 语法
Object.isExtensible() 是 JavaScript 的一个静态方法,它用于判断一个对象是否为可扩展的(即是否可以为它添加新属性)。
默认情况下,所有普通对象都是可扩展的,可以为它们添加新属性,也可以修改属性值。使用 Object.freeze()、Object.seal()、Object.preventExtensions()、Reflect.preventExtensions() 等方法转换过的对象,都会视为不可扩展。
语法:
Object.isExtensible(obj)说明:
Object.isExtensible() 方法接收单个参数。
obj(必选):要判断的对象。
Object.isExtensible() 方法会返回一个布尔值。如果对象是可扩展的,则返回 true;如果对象是不可扩展的,则返回 false。
注意: Object.isExtensible() 是一个浅层检测方法,它只会判断对象本身是否可扩展。如果对象包含其他对象(如数组或嵌套对象),它不会递归地检查这些嵌套对象是否也可扩展。
Object.isExtensible() 摘要
| 属于 | JavaScript Object 对象 |
|---|---|
| 使用频率 | 低 |
| 官方文档 | 查看 |
| MDN | 查看 |
Object.isExtensible() 示例
接下来,我们通过几个简单的例子来讲解一下 Object.isExtensible() 方法是如何使用的。
示例 1:Object.isExtensible() 基本用法
const obj = {};
console.log(Object.isExtensible(obj));
Object.preventExtensions(obj);
console.log(Object.isExtensible(obj));运行结果如下。
true
false分析:
从结果可以看出,默认情况下 obj 是可扩展的,此时 Object.isExtensible(obj) 会返回 true。而 Object.preventExtensions(obj) 会将 obj 转换为一个不可扩展对象,此时 Object.isExtensible(obj) 会返回 false。
示例 2:对数组使用 Object.isExtensible()
const arr = [];
console.log(Object.isExtensible(arr));运行结果如下。
true分析:
数组本质上是一个对象,因此使用 Object.isExtensible() 来判断会返回 true。
示例 3:对基本类型使用 Object.isExtensible()
const num = 2077;
console.log(Object.isExtensible(num));
const bool = true;
console.log(Object.isExtensible(bool));
const str = "绿叶网";
console.log(Object.isExtensible(str));运行结果如下。
false
false
false分析:
对任何基本类型(包括数字、字符串、布尔值等)使用 Object.isExtensible() 来判断,其结果都是 false。
示例 4:Object.isExtensible() 判断 3 种对象
const obj1 = { a: 1 };
Object.freeze(obj1);
console.log(Object.isExtensible(obj1));
const obj2 = { a: 1 };
Object.seal(obj2);
console.log(Object.isExtensible(obj2));
const obj3 = { a: 1 };
Object.preventExtensions(obj3);
console.log(Object.isExtensible(obj3));运行结果如下。
false
false
false分析:
使用 Object.freeze()、Object.seal()、Object.preventExtensions() 这 3 个方法创建的对象,使用 Object.isExtensible() 来判断,返回结果都是 false。
