导航
×
   ❮   
HTML CSS JavaScript PHP Go Sass W3C Colors ECMS

JS 教程

JS 简介 JS 如何使用 JS 输出 JS 语法 JS 语句 JS 注释 JS 变量 JS 运算符 JS 条件语句 JS 循环 JS 字符串 JS 数字 JS 函数 JS 对象 JS 日期 JS 数组 JS 类型化数组 JS 集合 JS Map 映射 JS Math JS 正则表达式 JS 数据类型 JS 错误 JS 事件 JS 编程 JS 关键字参考 JS 保留关键字参考 JS 运算符参考 JS 运算符优先级 JS UTF-8 字符 JS UTF-8 符号 JS UTF-8 表情符号 JS 版本

JS 高级教程

JS 对象 JS 函数 JS 类 JS 迭代 JS Promises JS 模块

JavaScript Object Protection 对象保护


对象保护方法

// 防止重新赋值
const car = {type:"Fiat", model:"500", color:"white"};

// 阻止添加对象属性
Object.preventExtensions(object)

// 如果可以向对象添加属性,则返回 true
Object.isExtensible(object)

// 阻止添加和删除对象属性
Object.seal(object)

// 如果对象已密封,则返回 true
Object.isSealed(object)

// 阻止对对象进行任何更改
Object.freeze(object)

// 如果对象已冻结,则返回 true
Object.isFrozen(object)

使用 const

防止对象被修改的最常用方法是使用 const 关键字。

使用 const 后,您无法重新赋值对象,但仍然可以更改属性值、删除属性或创建新属性。


JavaScript Object.preventExtensions()

Object.preventExtensions() 方法可以阻止向对象添加属性。

示例

// 创建对象
const person = {firstName:"John", lastName:"Doe"};

// Prevent Extensions
Object.preventExtensions(person);

// 这将抛出一个错误
person.nationality = "English";
亲自试一试 »

由于数组也是对象,因此也可以阻止数组进行扩展:

示例

// 创建数组
const fruits = ["Banana", "Orange", "Apple", "Mango"];
Object.preventExtensions(fruits);

// 这将抛出一个错误:
fruits.push("Kiwi");
亲自试一试 »

JavaScript Object.isExtensible()

您可以使用Object.isExtensible()来检查对象是否可扩展。

Object.isExtensible() 如果对象可扩展,则返回 true。

示例

// 创建对象
const person = {firstName:"John", lastName:"Doe"};

// Prevent Extensions
Object.preventExtensions(person);

// 这将返回 false
let answer = Object.isExtensible(person);
亲自试一试 »
// 创建数组
const fruits = ["Banana", "Orange", "Apple", "Mango"];

// Prevent Extensions
Object.preventExtensions(fruits);

// 这将返回 false
let answer = Object.isExtensible(fruits);
亲自试一试 »

JavaScript Object.seal()

Object.seal() 方法会阻止添加或删除新属性。

Object.seal() 方法会使现有属性不可配置。

Object.isSealed() 方法可用于检查对象是否已被密封。

注意

Object.seal() 方法在非严格模式下会静默失败,在严格模式下会抛出 TypeError。

示例

"use strict"
// 创建对象
const person = {
  firstName: "John",
  lastName: "Doe",
  age: 50,
  eyeColor: "blue"
};

// Seal Object
Object.seal(person)

// 这将抛出一个错误
delete person.age;
亲自试一试 »

由于数组也是对象,因此数组也可以被密封:

示例

// 创建数组
const fruits = ["Banana", "Orange", "Apple", "Mango"];
Object.seal(fruits);

// 这将抛出一个错误:
fruits.push("Kiwi");
亲自试一试 »

JavaScript Object.isSealed()

Object.isSealed() 方法可用于检查对象是否被密封。

Object.isSealed() 如果对象被密封,则返回 true。

示例

// 创建对象
const person = {firstName:"John", lastName:"Doe"};

// Seal Object
Object.seal(person);

// 这将返回 true
let answer = Object.isSealed(person);
亲自试一试 »
// 创建数组
const fruits = ["Banana", "Orange", "Apple", "Mango"];

// Seal Array
Object.seal(fruits);

// 这将返回 true
let answer = Object.isSealed(fruits);
亲自试一试 »

JavaScript Object.freeze()

Object.freeze() 方法会阻止对对象的任何更改。

冻结的对象是只读的。

不允许修改、添加或删除属性。

注意

Object.freeze() 方法在非严格模式下会静默失败,在严格模式下会抛出 TypeError。

示例

"use strict"
// 创建对象
const person = {
  firstName: "John",
  lastName: "Doe",
  age: 50,
  eyeColor: "blue"
};

// 冻结对象
Object.freeze(person)

// 这将抛出一个错误
person.age = 51;
亲自试一试 »

由于数组也是对象,因此数组也可以被冻结:

示例

const fruits = ["Banana", "Orange", "Apple", "Mango"];
Object.freeze(fruits);

// 这将抛出一个错误:
fruits.push("Kiwi");
亲自试一试 »

JavaScript Object.isFrozen()

Object.isFrozen() 方法可用于检查对象是否被冻结。

Object.isFrozen() 如果对象被冻结,则返回 true。

示例

// 创建对象
const person = {firstName:"John", lastName:"Doe"};

// 冻结对象
Object.freeze(person);

// 这将返回 true
let answer = Object.isFrozen(person);
亲自试一试 »
// 创建数组
const fruits = ["Banana", "Orange", "Apple", "Mango"];
Object.freeze(fruits);

// 这将返回 true:
let answer = Object.isFrozen(fruits);
亲自试一试 »



Copyright ©2020-2026 freew3c.com All Rights Reserved 提供的内容仅用于学习和测试,不保证内容的正确性。