我知道这里已经有很多关于命名空间的话题了。我也读了很多。我仍然有点不确定,而是对命名空间和闭包有点搞砸了。我还为我的线程带来了一些特定的代码。
以下是一个命名空间:
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)命名空间是(一个!)命名空间还是命名空间也可能是一个可以包含命名空间的命名空间(就像文件夹可以有文件夹一样)?