什么是`delete`在JavaScript中非常有用的用例?

Inc*_*ito 6 javascript memory-management

我们在这里有一些问题以更抽象的方式讨论删除,但我正在寻找delete可以使用何时使用的实际示例,而不是做一些事情,例如将属性设置为null或undefined.

删除操作符删除对象的属性.

遇到某种挑战的情况是什么,这delete是最好的解决方案,与其他方面相比?

Ray*_*nos 2

Object.defineProperty(Object.prototype, "Incognito", {
  get: function() { return 42; },
  set: function() { },
  configurable: true
});

console.log(({}).Incognito); // 42
({}).Incognito = null;
console.log(({}).Incognito); // 42

// I DO NOT WANT INCOGNITO
delete Object.prototype.Incognito
console.log(({}).Incognito); // undefined
Run Code Online (Sandbox Code Playgroud)

如果您想删除任何具有空 setter 的属性(因为有人认为是一个好主意),则需要将其删除。

var hash = {
  "FALSE": undefined,
  "TRUE": null
}

console.log("TRUE" in hash); // true
console.log("FALSE" in hash); // true
delete hash.FALSE;
console.log("FALSE" in hash); // false
Run Code Online (Sandbox Code Playgroud)

in运算符返回true任何存在的属性,无论其值如何。如果您希望将其归还,false您需要返回delete该物业。

在这两种情况下,将其设置为nullundefined不执行任何操作(因为它要么有一个不执行任何操作的设置器,要么这就是运算符in的工作方式)