私はすべてのデータを格納するために約10レベルのオブジェクトと配列を持つスライダビルダーで作業しています。最初の4つはほぼ同じ構造ですが、異なる配列になっています。冒頭で深いオブジェクトのリテラルへの省略形?
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];
:たとえば、次のように任意の時点で、私はおそらく同じスライド、同じ層に取り組んでいますので、私は、私のようないくつかの変数を宣言する可能性が考えていた
Slides[thisSlide].layers[thisLayer].animationgroup[thisAnimationId].sequence[currentSegment].duration
このアプリケーションの最初の例をこのように簡略化するために使用することができます。
CAG.sequence[currentSegment].duration;
期待通りに機能しませんでした。私はそれを使用しようとしたとき、後に、私はCSLが定義されていない苦情を取得し、まだそれはグローバルスコープにする必要があります:
function updateStuff(){
for (i = 0; i < CSL.length; i++) {
//do something
}
}
私はちょうど私がそれに取り組むように私のコードを少し短くしようとしています実際にそこにいる必要のないものを排除します。ここにあなたの例では
オブジェクトがすべてのレイヤーに存在すると仮定すると、投稿した表記に問題はありません。 – Rikin
これは、ステートメントでインデックスとして使用されている変数に*クロージャ*が付いていない限り、うまくいくはずです。 – Agalo
それも私が思っていたもので、どこに問題があるのかを示すために更新しました。 – Alan