Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

วิธีลบ Getter ด้วย Delete Operator ใน JavaScript

เพื่อลบ getter ด้วย delete operator ใช้คีย์เวิร์ด delete:

delete obj.name

ตัวอย่าง

<html> 
  <body> 
    <script> 
      var department = { 
        deptName: "Marketing", 
        deptZone: "North", 
        deptID: 101, 
        get details() { 
          return "Department Details<br>" + "Name: " + this.deptName + " <br>Zone: " + this.deptZone + "<br>ID: " + this.deptID; 
        }, 
        set details(info) { 
          var res = info.toString().split(' '); 
          this.deptName = res[0] || ''; 
          this.deptZone = res[1] || ''; 
          this.deptID = res[2] || ''; 
        } 
      }; 
      department.details = 'Marketing North 001'; 
      document.write("<br>Department Name: " + department.deptName); 
      document.write("<br>Departmet Zone: " + department.deptZone); 
      document.write("<br>Department ID: " + department.deptID); 
      delete department.deptName; 
      document.write("<br>Department Name (after deletion): " + department.deptName); 
    </script> 
  </body> 
</html>

⚠️ ข้อสังเกต (เหมือนบทก่อนหน้า)

  • โค้ดตัวอย่างลบ department.deptName (data property) — ไม่ใช่การลบ getter
  • ไม่สามารถลบ getter แยกจาก setter ได้ — property descriptor รวม getter/setter ไว้ด้วยกัน
  • delete obj.property จะลบ property descriptor ทั้งหมด (value, get, set, configurable, enumerable, writable)

ตัวอย่างลบ Getter/Setter จริง

const obj = {
  get name() { return this._name; },
  set name(v) { this._name = v; }
};

obj.name = "John";
console.log(obj.name);  // "John"

delete obj.name;  // ลบ getter และ setter พร้อมกัน
console.log(obj.name);  // undefined

Object.defineProperty - configurable flag

Object.defineProperty(obj, 'prop', {
  get() { return 1; },
  set(v) { },
  configurable: false  // ไม่สามารถ delete ได้
});
delete obj.prop;  // false (non-strict) / TypeError (strict)