concat の後、私は JavaScript を持っています:
Tasks={a:1,b:2},Tasks.Test={a:1,b:2},Tasks.Test.TestA={a:1,b:2},Tasks.TestB={a:1,b:2};
でも私はしたい:
Tasks={a:1,b:2,Test:{a:1,b:2,TestA:{a:1,b:2}},TestB:{a:1,b:2}};
どうすればうなり声でそれを行うことができますか?
concat の後、私は JavaScript を持っています:
Tasks={a:1,b:2},Tasks.Test={a:1,b:2},Tasks.Test.TestA={a:1,b:2},Tasks.TestB={a:1,b:2};
でも私はしたい:
Tasks={a:1,b:2,Test:{a:1,b:2,TestA:{a:1,b:2}},TestB:{a:1,b:2}};
どうすればうなり声でそれを行うことができますか?
ミニファイアは、コードの実行方法を変更するべきではありません。したがって、別の構造が必要な場合は、別の方法でオブジェクトを構築してください。
これで始めるとしましょう:
var Tasks = {a:1,b:2};
Tasks.Test = {a:1,b:2};
if (shouldIncludeTestA()) {
Tasks.Test.TestA = {a:1,b:2};
}
if (shouldIncludeTestB()) {
Tasks.TestB = {a:1,b:2};
}
このようにオブジェクトを構築する唯一の理由は、特定の部分が動的である場合、つまり実行時に変更される可能性がある場合です。たとえば、 ifTasks.Test.TestA
は空白の場合もあれば、より多くのデータを含むオブジェクトの場合もあります。
したがって、オブジェクトの作成方法を制御するコードがある場合、それを単一のオブジェクト リテラルに圧縮することはできません。これは、オブジェクトの作成方法を制御するコードを削除することを意味するからです。
一方、オブジェクトが毎回同じ構造を持っている場合は、それを単一のオブジェクト リテラルとして構築するだけで、単一のオブジェクト リテラルとして縮小されます。
var Tasks = {
a: 1,
b: 2,
Test: {
a: 1,
b: 2,
TestA: {
a: 1,
b: 2
}
},
TestB: {
a: 1,
b: 2
}
};
コンプレッサー/ミニファイアーは、コードのロジックを変更しないように非常に懸命に努力します。したがって、ロジックが複数のステートメントでオブジェクトを構築する場合、縮小されたコードには複数のステートメントが含まれます。
したがって、ミニファイヤが決して実行しないこと、および実行してはならないことを期待しているように思えます。