SORU
8 AĞUSTOS 2009, CUMARTESİ


JavaScript nesne boyutu

Boyutunu JavaScript bir nesne tarafından işgal bilmek istiyorum.

Aşağıdaki işlevi

function Marks()
{
  this.maxMarks = 100;
}

function Student()
{
  this.firstName = "firstName";
  this.lastName = "lastName";
  this.marks = new Marks();
}

.. Öğrenci örneğini şimdi

var stud = new Student();

ben de bir şeyler yapabilirim yani

stud.firstName = "new Firstname";

alert(stud.firstName);

stud.marks.maxMarks = 200;

vb...

şimdi, stud nesne bellekte boyutu işgal edecek. Bazı veri ve daha fazla nesne var.

Ne kadar stud nesneyi kaplar öğrenebilirim?

JavaScript sizeof() gibi bir şey mi?

Eğer tek bir işlev çağrısı gibi olsaydı gerçekten harika olurdu

sizeof(stud)

P. S. internette aradım ay için - bulamadım (forumları - hayır cevaplar birkaç sordu).

CEVAP
10 AĞUSTOS 2012, Cuma


Re-çarpanlarına benim kodu original answer var. Özyineleme kaldırıldı ve varlığını kabul yükü kaldırdık.

function roughSizeOfObject( object ) {

    var objectList = [];
    var stack = [ object ];
    var bytes = 0;

    while ( stack.length ) {
        var value = stack.pop();

        if ( typeof value === 'boolean' ) {
            bytes  = 4;
        }
        else if ( typeof value === 'string' ) {
            bytes  = value.length * 2;
        }
        else if ( typeof value === 'number' ) {
            bytes  = 8;
        }
        else if
        (
            typeof value === 'object'
            && objectList.indexOf( value ) === -1
        )
        {
            objectList.push( value );

            for( var i in value ) {
                stack.push( value[ i ] );
            }
        }
    }
    return bytes;
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Simon Hayter

    Simon Hayter

    20 HAZİRAN 2010
  • spyib

    spyib

    9 Ocak 2007
  • Virtual Riot

    Virtual Riot

    19 Mayıs 2011