JavaScript Object.isExtensible() 方法

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。

上一篇: Object.isSealed()

下一篇: Object.assign()

给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号