0

関数とオブジェクトがグローバルスコープに存在し、それらの間で関数呼び出しがあるいくつかの大きなjsファイルがあります。それらをローカルスコープに入れる比較的簡単な方法はありますか。

<script src="fileA.js"></script>
<script src="fileB.js"></script>
<script src="fileC.js"></script>

(function(){A ファイルの先頭と 最後のファイル})();の最後に配置しようとしましたが、うまくいきません。

ご親切なご支援に対して 10 倍 BR

4

3 に答える 3

2

各スクリプトは引き続き個別に解析されるため、このようにラップすることはできません(<script>タグは、コンテンツをファイルに含めるだけでは機能しません)。

ファイルを手動で連結し、function(){ ... }()コンテンツ全体を配置して、この新しく連結されたスクリプトを1つのユニットとして使用するだけです。

スクリプトの内容の書き直しが実行可能である場合は、他の回答で言及されているQuentinのように、ファクトリメソッドで与えられた共有スコープを使用するようにできます。ただし、さらに優れた解決策(書き直すことができ、これがより大きなプロジェクトである場合)は、AMDのような依存関係のある完全なモジュールの概念に切り替えることです。

于 2012-10-11T10:52:14.527 に答える
2

いいえ、ありません。

最も近い方法は、window.YOUR_SCRIPT_NAME = {}.

于 2012-10-11T10:48:07.970 に答える
1

script src="fileA.js" を使用する代わりに、Ajax を使用して fileA.js の内容を文字列として取得できます。あなたのローカルスコープに評価するよりも。

eval.call(yourlocalscope, string)
于 2012-10-11T11:01:35.010 に答える