Antworten auf deine Fragen:
Neues Thema erstellen

Objektinterner Zugriff auf Eigenschaften

Crackp0t

Aktives Mitglied

Ich habe ein großes Objekt welches wie folgt definiert ist:

Code:
{objekt:{
  wert1: "test",
  ebene2: {
    wert2: "test2",
    ebene3 : {
      berechne: function(){
      //rechne mit wert1 und wert2
      }
    }
  }
}

Wisst ihr ob und wenn ja wie ich mit berechne() auf die Werte von Ebene1 und 2 zugreifen kann, ohne die komplette Objektnotation, also z.B. objekt.ebene2.wert2, schreiben zu müssen?
 

exo

Aktives Mitglied

AW: Objektinterner Zugriff auf Eigenschaften

hmm versuchs mal mit

function(){
objekt::wert2 + objekt::wert1;
}

is die mir bisher einzige bekannte möglichkeit direkt auf var's + funktionen zuzugreifen...
 

Christian

verpeilt & verschallert

AW: Objektinterner Zugriff auf Eigenschaften

Ehm kann sein, dass ich mich irre, aber das meinst Du sicherlich im Zusammenhang mit JS oder?
Wenn ja:
Code:
berechne:function(){
 var val = 0;
 with(objekt){
  val += ebene2.wert;
 }
}

Unterm Strich bringt es Dich aber nicht wirklich weiter, es sei denn, Du hast soviele Attribute, dass sich ein with lohnen würde (>1 also).
Mir ist keine Methode bekannt, die die Werte einfach so wiedergibt, da jede Ebene für sich ein eigenständiges Objekt ist. Ich weiß nicht, ob jQuery zu sowas im Stande ist, dazu müsste sie aber Rekursion unterstützen,was aber spätestens bei doppelt auftretenden Attributenamen zu unvorhergesehenem Verhalten führen würde und nicht zuletzt schränkt das auch die Lesbarkeit des Codes massiv ein. Wenn Du die Möglichkeit hast, würde ich den Objektaufbau an Deiner Stelle umgestalten, ansonsten schätze ich, dass Du dazu gezwungen bist die komplette Leiter hinab zu steigen ;)
Mein Tipp für eine Neustrukturierung wäre eine Vertikale, statt mehrerer horizontaler holder-Klassen, die alle den selben Aufbau, aber verschiedene Funktionen beinhalten. Stichwort: Interfacing.
 
Zuletzt bearbeitet:

saila

Moderatorle

AW: Objektinterner Zugriff auf Eigenschaften

Hi,

du erzeugst ein JS-Object, in welchem die Werte für eine Berechnung bereits enthalten sind?
Da stellt sich mir die Frage, warum nicht direkt das Ergebnis in das Object zu schreiben.

Oder für welchen Zweck, welcher noch nicht näher beschrieben wurde soll das nützlich sein?
 

Crackp0t

Aktives Mitglied

AW: Objektinterner Zugriff auf Eigenschaften

Also es handelt sich um Javascript, das hab ich vergessen zu erwähnen, sorry.

Ein größeres Beispiel aus dem Projekt wäre:

Code:
globals: {
    "statics": {
        "network": {
            "hostname" : "foobar",
            "ethernet": {
                "status" : "enabled",
                "dhcp" : "enabled",
                "mac" : "00:18:80:01:50:55",
                "ip" : [192,168,0,141],
                "bIP" : [192,168,0,255],
                "mask" : [255,255,255,0],
                "dns1" : [192,168,0,1],
                "dns2" : [0,0,0,0],
                "gateway" : [1,0,0,0]
            },
            "wlan": {
                "status" : "disabled",
                "dhcp" : "disabled",
                "mac" : "13:37:BE:EF:5A:17",
                "ip" : [192,168,0,137],
                "bIP" : [192,168,0,255],
                "mask" : [255,255,255,0],
                "gateway" : [192,168,0,1],
                "dns1" : [192,168,0,1],
                "dns2" : [0,0,0,0],
                "ssid" : "accesspoint01",
                "encryptionType" : ["none", "WPA", "WPA2", "WEP"],
                "activeEncryption" : "WPA2"
            },
            "mobile" : {
                "status" : "disabled",
                "dhcp" : "disabled",
                "mac" : "DE:AD:BE:EF:5A:17",
                "ip" : [133,7,133,7],
                "bIP" : [192,168,0,255],
                "mask" : [255,255,255,0],
                "gateway" : [42,42,42,42],
                "dns1" : [42,42,42,42],
                "dns2" : [0,0,0,0],
                "connectionType" : "UMTS",
                "provider" : "T-Mobile"
            }
        },
        "stream": {
            "isStreaming" : 1,
            "video": {
            "saturationHex" : 80,
            "bightnessHex" : 80,
            "contrastHex" : 80,
            "standart" : "PAL",
            "source" : "composite",
            "sources" : ["Composite", "S-Video"],
            "profile" : 1
        },
        "audio" : {
            "volumeHex" : "80"
        },
        "date" : {
            "timestamp": 6272000,
            "timeformat" : 24,
            "timeserver" : "ntp.uni-regensburg.de",
            "timeserverActive" : true,
            "timezone" : "UTC+01",
            "timezones" : ["UTC-12","UTC-11","UTC-10","UTC-09:30","UTC-09","UTC-08","UTC-07","UTC-06","UTC-05","UTC-04:30","UTC-04","UTC-03:30","UTC-03","UTC-02","UTC-01","UTC","UTC+01","UTC+02","UTC+03","UTC+03:30","UTC+04","UTC+04:30","UTC+05","UTC+05:30","UTC+05:45","UTC+06","UTC+06:30","UTC+07","UTC+08","UTC+09","UTC+09:30","UTC+10","UTC+10:30","UTC+11","UTC+11:30","UTC+12","UTC+12:45","UTC+13","UTC+14"]
        },
        "state": {
            "warning" : "true"
        }
    }
}
Nun würde ich gern unter "state" diverse Funktionen hinzufügen, die mit Werten aus z.B. "mobile" arbeiten.
Wahrscheinlich muss ich es so machen wie von saila beschrieben, die with Methode fällt da ja aus.
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.633
Beiträge
1.538.446
Mitglieder
67.555
Neuestes Mitglied
scheflo
Oben