2

私はいくつかのJSファイルを持っています。最初のファイルは次のファイルで使用されるライブラリであり、これらの別のファイルにはすべて、そのファイルの関数を呼び出す関数main()があります。

lib.js=>ライブラリ

a.js :: main()=>a.jsで関数を呼び出す b.js
:: main()=>b.jsで関数を呼び出す
......。

だから、私はそれがそれらのファイルの関数mainを実行したいと思います( lib.jsをロードした後)。

JSファイルをロードした後、各関数をメインで実行するにはどうすればよいですか?a.js
を ロードしてmainを実行し、 b.jsをロードしてmainを実行します...

4

2 に答える 2

2

JavaScriptはCなどではありません。

関数を定義するファイルは関係ありません。関数は上書きされます。

したがって、最初にファイルa.jsをロードしてからファイルをロードすると、関数は定義しb.jsた関数になり、定義した関数はどこにも存在しなくなります。mainmainb.jsmaina.js

古い関数を保持したい場合は、各ファイルにオブジェクトを作成し、その中にメイン関数を定義することをお勧めします。だからこのようなもの。

a.js

var a = {};
a.main = function() {
    /* do stuff */
};

b.js

var b = {};
b.main = function() {
    /* do stuff */
};

だから今あなたは呼び出すことができます:

a.main();

b.main();
于 2012-04-25T15:34:30.197 に答える
1

依存関係(ロードの順序)を制御する必要がある場合は、head.jsまたはのようなものを使用しますrequire.js

mainただし、すべてのJSファイルでグローバル関数名を再利用してグローバル名前空間を汚染しないでください。グローバル名前空間の汚染を回避する方法と、それが良い考えである理由については、Web上にたくさんのドキュメントがあります。簡単なウェブ検索です。

ここでの回答の詳細:JavaScriptで名前空間を宣言するにはどうすればよいですか?

于 2012-04-25T15:31:38.647 に答える