Ich arbeite mit einem Slider-Builder, der etwa 10 Ebenen von Objekten und Arrays hat, um alle Daten zu speichern. Die ersten 4 sind so ziemlich immer gleich strukturiert, befinden sich aber in verschiedenen Arrays. Zum Beispiel:Kurzform zu tiefem Objektliteral?
Slides[thisSlide].layers[thisLayer].animationgroup[thisAnimationId].sequence[currentSegment].duration
, wo ich zu einem bestimmten Zeitpunkt bin wahrscheinlich auf derselben Folie arbeiten, die gleiche Schicht, so dass ich dachte, dass ich einige Variablen erklären könnte wie:
var currentSlide = 0;
var currentLayer = 0;
var currentChild = "0";
var currentKeyframe = "";
Slides.push({
"background-color": "#aaaaaa",
"canvasHeight": "200",
"canvasWidth": "1000",
"layers": []
});
var CSL = Slides[currentSlide].layers[currentLayer];
var CAG = Slides[thisSlide].layers[thisLayer].animationgroup[thisAnimationId];
am Anfang der Anwendung, die dann verwendet werden, um das erste Beispiel auf diese Weise Kurzschrift:
CAG.sequence[currentSegment].duration;
es hat nicht funktioniert, wie ich es erwartet hatte. später, als ich mit ihm versucht, erhalte ich eine Beschwerde, die CSL nicht definiert ist, und doch sollte es im globalen Bereich sein:
function updateStuff(){
for (i = 0; i < CSL.length; i++) {
//do something
}
}
ich meinen Code ein wenig, als ich auf sie zu verkürzen arbeiten nur versucht, mich zu und Dinge eliminieren, die nicht wirklich da sein müssen.
Angenommen, das Objekt existiert auf allen diesen Ebenen, sehe ich kein Problem mit der Notation, die Sie gepostet haben. Sie sollten in der Lage sein, mit diesen Kurzschrift zu arbeiten – Rikin
Dies sollte funktionieren, bis Sie keine * Schließung * auf der Variablen haben, die als Indizes in den Anweisungen verwendet werden. – Agalo
Das war, was ich auch dachte, ich aktualisierte es, um zu zeigen, wo ich ein Problem habe. – Alan