2011-08-30 26 views
5

Javascript motorlarının (özellikle tarayıcı motorlarının) bir diziyi nasıl sakladığından emin değilim. Örneğin, bu ne kadar bellek kullanır?Javascript Dizi dizini ile ilgili temel bilgiler

var x = new Array(0, 1, 2, 1000, 100000000); 

Tamsayı tarihleri ​​dizi dizinleri olarak eşlemek istiyorum, ancak bunun kötü bir fikir olmadığından emin olmalıyım.

cevap

11

Diziler sadece birkaç şekilde "özel" dir: Onlar Onlar var

  • onların prototip ("dilim()" vs.) gelen bazı ilginç dizi benzeri yöntemler var

    • bir Eğer yepyeni bir dizide pozisyonunda 10299123 bir şey saklıyorsanız büyük sayısal özellik "adı"

    izler "sihirli" length mülkiyet, çalışma zamanı gerçek bir boş dizi tahsis tüm bellek kullanmaz. Eğer zaman damgası depolamak bahsediyorsak Bunun yerine, size saklamak istediğiniz ve ne olursa olsun mağazaları length tarihleri ​​ile özel olarak Şimdi 10299124.

    sorun güncellendi emin olur, bundan haberleri (ı düşünüyorum ) olmasıdır 32 bit tam sayıdan daha büyük. Dizi indeksleri bu boyutla sınırlıdır. Ancak, tüm bu demektir ki length doğru olmayacaktır. nesneler ad-değer olarak kullanılabilir JavaScript

    var dateStorage = {}; 
    
    dateStorage[someDate.getTime()] = "whatever"; 
    

    sürece adı temsil edilebilir olarak eşleştiren: Gerçekten zaten dizi şeyler hiçbirini umurumda değil, o zaman gerçekten tek ihtiyacınız bir düz nesnedir Bir dize olarak (bu rakamlar için açıkça doğrudur).

  • +0

    Bu harika bir cevaptı. –

    +0

    Teşekkür ederim. JS'de Array depolaması hakkında daha fazla teknik özellik içeren bir yanıttan keyif alırdım. Unix zaman damgası 32 bit tamsayıdır. –

    +1

    JavaScript sayısal türlerinin konusu çok garip ve karmaşıktır. ECMA standart belgesi uzun ve can sıkıcıdır, ancak dil anlambilimine ilişkin oldukça açık bir şekilde (ayrıntılı olarak ayrıntılıysa) açıklamaları vardır. Özellikle Array açıklamaları benim için oldukça basittir. – Pointy