如何在 JavaScript 中使用 delete 运算符删除 getter?


在本教程中,我们将学习如何使用JavaScript中的`delete`运算符删除getter函数。Getter函数用于获取对象的属性,并将属性与getter函数绑定,即每当调用属性时,getter函数也会随之调用。在一个对象上,每个名称只能有一个getter或setter,因为我们不能在JavaScript中使用相同的名称创建多个getter。

要在JavaScript中删除getter函数,我们使用`delete`运算符,它使用关键字“delete”。

语法

使用`delete`运算符删除getter函数的语法如下:

delete object_name.property
   or
delete object_name[property]

`delete`运算符也可用于删除对象的普通属性。`delete`运算符在对象中非常有用,因为它不像数组那样可以使用`pop()`、`splice()`、`filter()`或其他方法,它只使用`delete`运算符来删除对象的任何属性。因此,在删除getter函数时,应非常注意不要删除对象的普通属性。此外,在使用此属性删除setter时,需要记住备份getter函数并在删除setter函数后将其恢复。

在访问器属性中,我们使用getter和setter两种方法来获取和设置对象的值,这意味着这两种方法都可以用来定义对象访问器。Getter和setter属性允许我们从对象外部获取和设置对象的属性值,我们也可以在不访问对象的情况下更改值。

让我们来看一个示例,我们将创建一个getter函数,然后使用`delete`运算符将其删除。

步骤

使用JavaScript中的`delete`运算符编写HTML代码删除getter的步骤:

  • 步骤1:创建一个名为person的对象。

  • 步骤2:为对象分配一些键值对,例如first_name、last_name、section和hair_color。

  • 步骤3:现在我们使用getter函数创建另一个属性,在这个属性中,我们通过调用其中的其他键值对来创建一个对象方法。

  • 步骤4:为了在方法中调用其他键值对,我们使用“this”运算符。

  • 步骤5:我们还将使用return语句返回getter属性的值。

  • 步骤6:现在我们打印getter属性的值。

  • 步骤7:现在使用`delete`运算符,使用“delete”关键字删除getter属性。

  • 步骤8:最后,我们再次打印getter属性的值,以检查它是否已删除。

示例

我们可以使用以下代码在JavaScript中使用`delete`运算符删除getter:

<html>
<body>
   <script>
      var person = {
         first_name: "Aditya",
         last_name: "Chaudhary",
         section: "A",
         hair_color: "black",
         get details() {
            return "Student Details<br>" + this.first_name + " " +this.last_name + " of section " + this.section + " have " + this.hair_color+ " color hairs ";
         },
      }
      document.write( person.details);
      delete person.details;
      document.write("<br>Student details (after deletion): " +person.details);
   </script>
</body>
</html>

正如我们在输出中看到的,当我们第一次打印getter属性时,它向我们显示了person的所有详细信息,而在删除它之后,它显示为undefined,这意味着`delete`运算符删除了getter属性的值。

因此,`delete`运算符会删除getter属性的值,但是如果我们想的话,我们也可以在删除它之后重新分配值给getter属性,那么它将作为对象的普通属性工作。它还在第一次访问后用数据属性替换访问器属性,从而创建一个延迟初始化的数据属性。

除了从对象中删除键值对之外,`delete`运算符还会返回true或false值。在大多数情况下,它返回true,除非该属性是不可配置的属性,在这种情况下,它返回false。

注意:如果我们删除对象中不存在的属性,我们也会得到true作为输出。

更新于:2022年12月6日

821 次浏览

启动您的 职业生涯

完成课程获得认证

开始学习
广告