เพื่อลบ setter ด้วย delete operator ใช้คีย์เวิร์ด delete:
delete obj.name
ตัวอย่าง
Live Demo
<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) — ไม่ใช่การลบ setter - ไม่สามารถลบ getter/setter แยกกัน ได้ — ต้องลบ property ทั้งคู่ (getter + setter) พร้อมกัน
deleteลบ property ทั้งหมด (data property, getter, setter) ที่ชื่อตรงกัน
วิธีลบ Getter/Setter ให้ถูกต้อง
const obj = {
_value: 0,
get value() { return this._value; },
set value(v) { this._value = v; }
};
// ลบ property ทั้งคู่ (getter + setter)
delete obj.value; // ลบ getter และ setter พร้อมกัน
// ตรวจสอบ
console.log(obj.value); // undefined (property หายไป)
// obj._value ยังคงอยู่ (internal property)
Object.defineProperty - ควบคุมรายละเอียด
const obj = { _value: 0 };
Object.defineProperty(obj, 'value', {
get() { return this._value; },
set(v) { this._value = v; },
configurable: true // อนุญาตให้ delete ได้
});
delete obj.value; // OK เพราะ configurable: true