เพื่อลบ 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)