[英]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.