Object.preventExtensions()使用技巧

JS对象不可扩展性

Object.preventExtensions()

方法让一个对象变的不可扩展,也就是永远不能再添加新的属性。

// Object.preventExtensions将原对象变的不可扩展,并且返回原对象.
var obj = {};
var obj2 = Object.preventExtensions(obj);
obj === obj2;  // true
 
// 字面量方式定义的对象默认是可扩展的.
var empty = {};
Object.isExtensible(empty) //=== true
 
// ...但可以改变.
Object.preventExtensions(empty);
Object.isExtensible(empty) //=== false

转载于:https://www.cnblogs.com/pluslius/p/10266106.html

### Object.preventExtensions 方法详解 `Object.preventExtensions()` 是 JavaScript 中用于控制对象可扩展性的方法之一。该方法的作用是阻止向对象添加新的属性,使对象变为不可扩展(non-extensible)。一旦对象被标记为不可扩展,则无法再为其添加任何新属性。 #### 用途 - **限制对象的扩展性**:适用于需要冻结对象结构、防止意外修改对象属性的场景。 - **与 `Object.seal()` 和 `Object.freeze()` 配合使用**:前者不仅阻止添加新属性,还禁止删除已有属性;后者进一步禁止修改属性值。 - **增强安全性**:在某些情况下,确保对象结构不会被外部代码更改,提高程序的健壮性。 #### 使用方式 ```javascript Object.preventExtensions(obj); ``` 其中,`obj` 是要设置为不可扩展的对象。该方法返回传入的对象本身。 #### 示例 ```javascript let obj = { name: "Alice" }; console.log(Object.isExtensible(obj)); // true Object.preventExtensions(obj); // 尝试添加新属性会失败 obj.age = 25; console.log(obj.age); // undefined // 修改已有属性仍然有效 obj.name = "Bob"; console.log(obj.name); // Bob // 删除属性仍然允许 delete obj.name; console.log(obj); // {} ``` 上述示例中,调用 `Object.preventExtensions()` 后,对象 `obj` 不再接受新属性的添加,但已有属性仍可被修改和删除[^2]。 #### 注意事项 - **不可逆操作**:一旦对象被标记为不可扩展,就无法撤销此操作。 - **不影响已有属性**:虽然不能添加新属性,但可以修改或删除已有属性。 - **与其他方法的区别**: - `Object.seal()`:在阻止添加新属性的同时,也不允许删除属性。 - `Object.freeze()`:除了阻止添加和删除属性外,还不允许修改属性值。 ### 相关方法 - `Object.isExtensible()`:检查对象是否可扩展。 - `Object.seal()`:密封对象,阻止添加新属性并禁止删除已有属性。 - `Object.freeze()`:冻结对象,阻止任何对对象结构和值的修改。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值