5

EaselJSライブラリの例でこのコードを思いつきます。これは、createjsライブラリ全体の名前空間を「ウィンドウ」に割り当てることです。

<script>
var createjs = window;
</script>

私の質問はこれです:ライブラリの名前空間をウィンドウに設定することは本当にばかげた考えですか?名前空間化されたすべての変数を突然グローバルスコープにすることで、名前空間を使用するという全体的なポイントを取り除くだけではありませんか?

私が見ることができる唯一の利点は、オブジェクトに対してより短いコンストラクターを記述できることです。たとえば、次のように入力します。

 stage = new Stage(canvas);

それ以外の:

 stage = new  createjs.Stage(canvas);

これは悪い考えですか、それともどういうわけか素晴らしいですか、それとも無害に風変わりですか?

4

3 に答える 3

5

これがこのように設定された理由は、名前空間が設定されていない以前のバージョンとの下位互換性を維持するためでした。これにより、開発者は、すべてのコードをリファクタリングすることなく、追加された最新バージョンにアップグレードできます。

于 2012-10-05T19:45:05.700 に答える
2

私にとって良いアイデアは、多くの人が積極的に使用すべきものです。そしてそれがまさに私がこのトリックを悪い考えだと考える理由です:要するに、それは実際に名前空間の考えを打ち負かします:多くの人々(=他の人気のあるJSライブラリの作者)windowが名前空間のルートとして使い始めると、メソッドがメソッドを上書きすることの害別の方法では、そのようなアプローチの考えられる利点が無効になります。

于 2012-10-04T00:55:30.830 に答える
1

実際には状況によって異なります。複数のJSライブラリを使用している場合は、すべてのライブラリを楽しませるために名前空間からウィンドウへの変換を避けている可能性があります。

ただし、ゲーム/アプリケーションに単一のライブラリ(CreateJS)を使用している場合は、名前空間からウィンドウへの使用を検討して、カスタム名前空間名を何度も作成するために費やされる時間を大幅に節約することを検討してください。CreateJSでゲームを構築するときに便利な方法だと思います。

于 2013-01-09T14:51:54.180 に答える