簡體   English   中英

刪除對象屬性在刪除操作之前生效

[英]Deleting an object property has effect before the delete action

我有這個代碼:

data["id"] = 0;                                                     
console.log(data); // first log
found["test"] = data;
delete data.id;
console.log(data); // second log

數據和找到的是以前創建的對象。

我的控制台打印兩次沒有“ id”屬性的數據對象。

如果我將刪除替換為: data.id = ''; 控制台將使用空id屬性將數據對象打印兩次。

而且found["test"]的對象沒有ID(或ID =“”,取決於我在哪個實驗中)

有人可以幫助我了解發生了什么嗎?

console.log正在為您戲弄。 變量data不變。 變量data引用的對象正在發生變化。 單擊日志時,日志將顯示對象的狀態,而不是在登錄時顯示。

並不是說delete是提早發生的,而是您的瀏覽器控制台打開對象的時間太晚了。

如果插入debugger語句以暫停執行,則應該看到預期的結果。 然后繼續執行,該屬性將按預期刪除。

data["id"] = 0;                                                     
console.log(data); // first log
debugger;
// inspect your object now

found["test"] = data;
delete data.id;
console.log(data); // second log
// inspect the object now, the property should be gone

O您可以通過鑽入對象來更改正在記錄的內容:

data["id"] = 0;                                                     
console.log(data.id); // 0
found["test"] = data;
delete data.id;
console.log(data.id); // undefined

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM