ここにはすでに名前空間に関する多くのスレッドがあることを知っています。そして、私もそれらの多くを読みました。まだ少し確信が持てませんが、名前空間とクロージャーについて少し混乱しています。また、スレッドに特定のコードをいくつか持ってきます。
以下は名前空間です。
var Interface = (function(){
return {
name: value,
name: function( ... ) {
}
}; })();
//interface.call(); >> to call the namespace (I did not get where yet, but this is another story I think)
また:
var Interface = (function(){
function a(){
}
return {
name: a
}; })();
わかりました、多くのスレッドとサイトを読んで、最初に気づいたことは: - Javascript には名前空間がなく、何らかの理由でスキップされました。- クロージャーはほとんど同じようです。少なくとも、違いを理解するための知識が不足しています。たとえば、クロージャーであるはずの関数は次のとおりです。
var Counter = (function() {
var privateCounter = 0;
function changeBy(val) {
privateCounter += val;
}
return {
increment: function() {
changeBy(1);
},
decrement: function() {
changeBy(-1);
},
value: function() {
return privateCounter;
}
}
})();
質問:
1)名前空間とクロージャーは同じですか?おそらく「定義」のレベルが異なるだけです:クロージャー(「メソッド」)は、名前空間(概念)がJavascriptでどのように実現されるのですか?
2) 上記の名前空間: 次の方法でアクセスfunction a
しますか?
Interface.name()
3) この名前空間は、パラメーターを持つ関数を使用してどのように機能しますか?
var Interface = (function(){
function a(p1, p2){
}
return {
name: a
}; })();
これをどのように呼ぶことができますか?( と を挿入p1
したことに注意してくださいp2
)。
4)名前空間は(1つの!)名前空間ですか、それとも名前空間を含めることができる名前空間でもあるのですか(フォルダーにフォルダーを含めることができるように)?