Я работаю с ползунковым конструктором, который имеет около 10 уровней объектов и массивов для хранения всех данных. Первые 4 почти всегда структурированы одинаково, но находятся в разных массивах. Например:Сокращение до глубокого объекта буквально?
Slides[thisSlide].layers[thisLayer].animationgroup[thisAnimationId].sequence[currentSegment].duration
, где в любой момент времени я, вероятно, работает на том же слайде, в том же слое, поэтому я думал, что я мог бы объявить некоторые переменные, такие как:
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];
в начале приложения, которые затем могут быть использованы для обсчитывать первый пример таким образом:
CAG.sequence[currentSegment].duration;
он не работает, как я ожидал, что это. позже, когда я попытался использовать его, я получаю жалобы, что CSL не определен, и тем не менее она должна быть в глобальном масштабе:
function updateStuff(){
for (i = 0; i < CSL.length; i++) {
//do something
}
}
Я просто пытаюсь сократить мой код немного, как я работаю над этим и устранить вещи, которые действительно не должны быть там.
Предполагая, что объект существует во всех этих слоях, я не вижу никаких проблем с записью, которую вы опубликовали. Вы должны иметь возможность работать с этими сокращениями. – Rikin
Это должно работать, пока вы не будете иметь * замыкание * на переменной, которая используется в качестве индексов в операторах. – Agalo
Это то, о чем я тоже думал, я обновил его, чтобы показать, где у меня проблема. – Alan