Để xóa getter, dùng từ khóa delete trên property name (xóa cả getter và setter của accessor property):
delete obj.propertyName
Ví dụ (tương tự xóa setter)
<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>Department Zone: " + department.deptZone);
document.write("<br>Department ID: " + department.deptID);
delete department.details; // Xóa cả getter và setter 'details'
document.write("<br>Department Name (after deletion): " + department.deptName);
</script>
</body>
</html>
Lưu ý quan trọng
delete department.detailsxóa toàn bộ accessor property (cả getter VÀ setter).- Data properties
deptName,deptZone,deptIDkhông bị ảnh hưởng. - Không thể xóa chỉ getter hoặc chỉ setter bằng
deleteđơn lẻ.
Xóa chỉ Getter (giữ Setter) - Object.defineProperty
const obj = {
_val: 0,
get prop() { return this._val; },
set prop(v) { this._val = v; }
};
// Xóa getter, giữ setter
Object.defineProperty(obj, 'prop', {
get: undefined, // Remove getter
set: v => { this._val = v; }, // Keep/set setter
configurable: true
});
// Test
obj.prop = 42; // Setter works
console.log(obj.prop); // undefined (getter removed)
// obj._val vẫn là 42
Khi nào cần xóa Getter/Setter?
- Dynamic object modification (plugin system, hot reload).
- Testing: mock/restore accessors.
- Migration: chuyển từ accessor sang data property.