Nhà điều hành delete
là hữu ích trong việc thiết lập lại hoặc phương pháp rõ ràng để loại bỏ đối tượng dữ liệu theo nghĩa đen được liên kết với các biểu mẫu:
delete formmap["forms"]
Nó cũng hữu ích cho việc xóa đối tượng gắn liền với nhà nước:
/* lights... */
if (node["alpha"+i].active)
{
// camera, action
node["beta"+i] = chi;
}
else
{
/* cut! */
delete node["beta"+i];
node["omega"].state = false;
}
Bên cạnh đó, nó hữu ích như một cách viết tắt cho nội tuyến thuộc tính đối tượng không bắt buộc:
var foo = {"bar": [], "drink": [], "tab": [] }
// happy hour
this.bar && (foo["bar"]).push(this.bar) || delete foo.bar;
// open a tab
this.drink && (foo["drink"]).push(this.drink) || delete foo.drink;
// cheers
this.tab && (foo["tab"]).push(this.tab) || delete foo.tab;
Cuối cùng, nó hữu ích như một cách phân biệt giữa các loại bằng cách sử dụng quyền ghi có thể ghi thuộc tính loại cá thể cụ thể dưới dạng thử nghiệm litmus:
// Function
!!foo.prototype === true && delete foo.length === false && delete foo[-1] === true
// Object, Number, Infinity, or Boolean (probably Object)
!!foo.prototype === false && delete foo.length === true && delete foo[-1] === true
// Array
!!foo.prototype === false && delete foo.length === false && delete foo[-1] === true
// String
!!foo.prototype === false && delete foo.length === false && delete foo[-1] === false
// RegExp
delete foo.source === false
Tài liệu tham khảo
Nguồn
2013-06-05 23:46:47
Tôi không nhận được nó. Whats có điểm gì? Các câu hỏi đã được quan tâm về logic ứng dụng (như xa như tôi đã nhận nó). Vì vậy, câu hỏi vẫn còn mở, lợi ích của việc sử dụng 'xóa' và không chỉ' null'ing biến/tài sản. – jAndy
@jAndy xin lỗi điểm là vô hiệu hóa nó không hoạt động. Tôi đã làm cho nó rõ ràng hơn một chút. – Raynos
uhhh, đã đến khá muộn vào câu trả lời. Phiên bản đầu tiên (chỉ là '.defineProperty') không có ý nghĩa gì nhiều. – jAndy