在 JavaScript 中,delete
是一元操作符,它用来删除对象属性或者数组元素。
const obj = {
a: 1,
['a-2']: 2,
};
console.log('a' in obj); // true
console.log('a-2' in obj); // true
delete obj.a;
delete obj['a-2'];
console.log('a' in obj); // false
console.log('a-2' in obj); // false
delete 只能删除自有属性,不能删除继承属性
function Man(name) {
this.name = name;
}
Man.prototype.sex = 1;
const alex = new Man('alex');
delete alex.name;
delete alex.sex;
console.log('name' in obj); // false
console.log('sex' in obj); // true
delete
实际上只是断开了属性和宿主对象的联系
const obj = {
a: {
a1: 1,
},
};
const p = obj.a;
delete obj.a;
console.log(p.a1); // 1
由于已经删除的属性的引用仍然存在,在某些 JavaScript 运行环境中,可能导致这部分的内存无法进行回收,最终造成内存泄露。