JavaScriptを独自の名前スコープで記述するとは、どうやら競合を回避し、W3C標準に準拠しているようですが、それが何を意味するのか、どのように行われるのかわかりません。
3 に答える
5
これは、グローバル変数の使用を最小限に抑える方法です(したがって、競合の可能性を回避します)。
var myNS = {}; // Your namespace (an object) = a global var.
myNS.title = "Demo"; // Your variables come here as object properties.
myNS.date = "2012-05-21";
オブジェクトのプロパティは、スカラー型、配列、オブジェクト、関数など、どのタイプでもかまいません。
于 2012-05-14T13:24:04.037 に答える
5
私があなたが意味すると思うのは名前空間です。これは、グローバルスコープを汚染しないように、名前空間にコードを含める必要があることを意味します(まあ、1つの変数だけで汚染したので、それだけです)。作成しようとしているすべての関数やその他のものは、その名前空間に存在します。
オブジェクトリテラルの単純な名前空間の例
var ns = {
foo : function(){...},
bar : function(){...}
}
宣言したグローバルは1つだけns
です。残りはそこに保存され、ns
ns.foo();
ns.bar();
実際の例は、JSフレームワークで見ることができます。たとえば、jQueryとUnderscoreがあります
//jQuery uses "jQuery" and "$" as namespaces and has "each()"
$.each();
//Underscore has "_" as a namespace and also has "each()"
_.each();
それらは同じ関数名を持っていますが、別々の名前空間に存在します。これにより、競合が回避され、何がどこに属するかを特定するのに役立ちます。
于 2012-05-14T13:24:23.893 に答える
3
グローバル関数を書くのではなく、自分のオブジェクトに関数を書くことを意味していると思います。
var myScope = (function() {
function privateFunction1() {...}
function privateFunction2() {...}
function a() {...}
function b() {...}
function c() {...}
return {a: a, b: b, c: c};
})();
于 2012-05-14T13:25:37.483 に答える