JavaScript delete 运算符

在 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 运行环境中,可能导致这部分的内存无法进行回收,最终造成内存泄露。

最后更新于