在 JavaScript 中,对象的属性可以通过显式或隐式方式进行删除
显式删除是使用 delete,而隐式删除则是由于其他操作导致属性失效或不可访问
显式删除
显式删除是指使用 delete 操作符来移除对象的属性。示例:
const obj = {
name: 'Alice',
age: 25
};
delete obj.age; // 显式删除属性 age
console.log(obj); // { name: 'Alice' }
隐式删除
隐式删除通常指的是属性因某些操作而失效或变得不可访问,但并未使用 delete 操作符。常见的隐式删除情况包括:
- 重新赋值为 undefined:
obj.age = undefined; // 属性仍然存在,但值为 undefined
- 使用 Object.freeze()
Object.freeze(obj); // 冻结对象,无法新增或删除属性
- 从原型链中删除属性: 如果属性被定义在原型链上,删除父对象的属性可能会影响子对象。
- 对象的深拷贝: 将对象赋值给另一个变量时,可能不再引用原有属性。