0

1 つのフォルダーに 2 つの異なる JS ファイルがあります。最初の JS ファイルに名前空間を与え、 var fooMYNS = {}; その名前空間を使用していくつかの変数を宣言し ましたfooMYNS.newAr = new Array();。今、私は配列のいくつかの要素をプッシュしました{1,2,3,4}. この配列の詳細を 2 番目の JS ファイルで使用したいと考えています。この名前空間を使用してそれを行うにはどうすればよいですか。

注: 2 番目は、最初の JS ファイルの後でのみ呼び出されて実行されるため、配列の割り当てが行われます。

それとも、名前空間なしでそれを行うことができますか? どんな提案も受け入れられます。ありがとう。

4

2 に答える 2

0

これは、質問に少なくとも1つのタイプミスがあることを前提としています。{1,2,3,4}は有効な配列でもオブジェクトでもありません。

最初のファイル:

var fooMYNS = {};
fooMYNS.newAr = []; // It's faster to use an empty array than the Array constructor.
fooMYNS.newAr = [1,2,3,4]; // Not sure what happens before this that you can't just assign these values to the array in the first place.

2番目のファイル:

console.log(fooMYNS.newAr); // This outputs to the browser console [1,2,3,4]
于 2012-01-12T19:25:54.397 に答える
0

両方のファイルがページに含まれている場合、任意のオブジェクトの外側で var で宣言されたものはすべてグローバル名前空間に含まれ、どこからでもアクセスできます。ページのどこからでも簡単に fooMYNS にアクセスできるはずです。

この他の質問/回答を確認してください: JavaScript で名前空間を宣言するにはどうすればよいですか?

ただし、共有する必要があるものを明示的に宣言する非常に優れた方法は、node.js に由来し、Coffeescriptで適切に実装されています

root = exports ? this
root.foo = -> 'Hello World'

Coffeescript は、すべての個々のファイルをクロージャーで自動的にラップします。これは、グローバルな JavaScript 名前空間を汚染しないようにするのに本当に役立ちます。その結果、上記のイディオムを使用して、必要な正確な API のみを公開する必要があります。

上記のコードは最初にエクスポート (node.js グローバル) をチェックし、それ以外の場合はクロージャー スコープ (this) を使用し、そのグローバル スペースにメソッド (foo) を明示的にアタッチします。

現在、他のファイルでfooはグローバルにアクセスできますが、明示的にグローバルにされていないものはアクセスできません。

于 2011-07-13T17:02:25.530 に答える