2

最近、JavaScriptパターンと、モジュールパターンを使用してグローバルを回避する方法について読んでいます。d3.js階層レイアウトのソースコードを見ると、以下が意図的なものかどうかわかりません。

d3.layout.hierarchyはモジュールパターンを使用していますが、最後に、その外側に多くのメソッドが表示されます。これは、レイアウトとその派生オブジェクト(パーティション、ツリーなど)にのみ適用できると思います。

d3_layout_hierarchyRebind
d3_layout_hierarchyChildren
d3_layout_hierarchyValue
..

これは意図的なものですか、それともモジュール内でキャプチャする必要がありますか?

4

1 に答える 1

5

ライブラリがmakefileを介して構築される場合、これらのメソッドはすべて、ラッパーコードの無名関数(start.jsおよびend.jsを参照)内に含まれます。したがって、最終的に構築されたライブラリでは、それらのいずれもグローバルではありません。これは、ライブラリを多くのファイルに簡単に分割できるようにするための設計上の選択であり、それぞれに匿名関数ラッパーを必要としません(require.jsスタイルのモジュールの場合のように)。

于 2012-09-17T17:07:29.723 に答える