簡體   English   中英

JavaScript的怪異行為

[英]Weird behavior of javascript

請參閱附件的屏幕截圖。 請參見Object的未決應用屬性。 當我在eclipse中調試時,pendingApp顯示對象數組,這是正確的! 但是當我是JSON.stringify(object)向我顯示空數組。 Eclipse圖片

終端圖片

請讓我知道此行為的原因。 我想我不知道任何Java腳本的想法/概念? :P :)

當我將這個對象保存到數據庫中時,將存儲未決應用的空白數組!

var pending_app = [];
var new_record = {"pendingApp" : [], "installedApp" :[] };
....SOME CODE+conditions HERE....
 pending_app[appId] = {'action' : action };
 new_record.pendingApp = pending_app;
// create app-config data
 return app_model.create(new_record); //will return promise object

這不是怪異的行為,而是使用Array存儲鍵值數據的常見錯誤。

簡短答案:使用文字對象存儲這些數據


雖然可以在Javascript中的每個對象上添加屬性,但是無法使用默認的數組機制對其進行迭代

for (var i = 0; i < array.length; i++){}
array.forEach();

簡單演示:

var array = [];
array["anId"] = 1;
array.length; // 0

array[4294967295] = 1; // Indice >= unsigned 32-bit Max Value
array.length; // 0
array[4294967295]; // 1

因此,帶有ECMAScript 5規范的 JSON.stringify將使用Array機制遍歷所有項目,但一無​​所獲。

Objects不同,您可以使用列出Objects

Object.keys(array); // ["anId"]

暫無
暫無

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

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