Keresés

Új hozzászólás Aktív témák

  • nevemfel

    senior tag

    válasz vz12 #9974 üzenetére

    I. Objektumok.

    Javascriptben egy objektum mezőit kétféle szintaxissal lehet elérni.

    1. dot notation:
    obj.property

    2. bracket notation:
    obj["property"]

    A bracket notation akkor szükséges, ha olyan propertyt akarsz kezelni, ami
    1. változóban van eltárolva,
    2. javascriptben nem minősül megengedett azonosítónak (identifier). Például számjeggyel kezdődik, mint tömbelemek esetében, vagy space-t tartalmaz.

    Erre találták ki a bracket notationt, ami stringet vár, nem azonosítót. Ha nem stringet kap, akkor a kapott értéket stringgé konvertálja.

    II. Tömbök.

    Javascriptben létezik egy ún. array literal:

    var cars = ["BMW", "Toyota", "Mazda"];

    Az ezzel a szintaxissal létrehozott érték egy olyan objektum, aminek a prototype linkje a beépített Array objektumra mutat.
    Ebből örököl egy csomó tömbspecifikus metódust (push, pop, slice, splice stb...) és a length propertyt. Tehát a tömb is objektum, de speciális objektum.

    III. typeof

    A typeof egy legacy nyelvelem. Minden objektumra, függetlenül, hogy miből származik, a type operátor "object"-et ad vissza, kivéve function esetében. Tömb esetén tehát szintén "object"-et fog visszaadni.

    Ha azt akarod tesztelni, hogy egy érték tömb vagy sem:
    1. cars instaceof Array true-t ad vissza, ezzel jelezve, hogy a cars proto linkje az Array-re mutat (ami egyébként az Objectre linkel tovább). Cross framek (iframe) esetében az instanceof bugosan viselkedik, mindig false-t ad vissza.
    2. Array.isArray(cars); szintén true-val tér vissza tömb esetén. Ez cross-frame kompatibilis.

  • sztanozs

    veterán

    válasz vz12 #9974 üzenetére

    Nincs ebben semmi magia, miert ne lehetne a tomb egy tomb tipusu objektum (pontosabban egy olyan objektum, aminek tomb a prototipusa)...?

Új hozzászólás Aktív témák

Hirdetés