Please check this link for my complete code (It's simple though)
问题1:JavaScript中定义的命名空间是什么?根据我的理解,看起来任何对象都可以是命名空间?
假设我们有一个名为' SPA'的命名空间,这意味着"简单页面应用程序",在这个命名空间内,我定义了四个模块范围变量,$ chatSlider,$ toggleSlider,$ onclickSlider ,initModule;
var spa = (function( $ ) {
// Module scope variables
var
// Set constants
configMap = {
// some code here
},
// Declare all other module scope variables
$chatSlider, toggleSlider, onClickSlider, initModule;
toggleSlider = function() {
// some code here
}
// do not take action if slider is in transition
return false;
}
onClickSlider = function(event) {
toggleSlider();
return false;
}
// Public method / initModule/
// sets initial state and provides feature
initModule = function($container) {
// some code here
return true;
};
return {
initModule: initModule
};
})(jQuery);
现在我想在外面调用initModule" spa",就像这样
$(document).ready(function () {
spa.initModule( $('#spa'));
});
问题2:我们为什么要写
return {
initModule: initModule
};
对我来说,返回{initModule}似乎更有意义,上面的代码是什么意思,它的语法是什么?
最后但并非最不重要的是,通常我会以
这样的格式编写函数function ( $var) {
// function code here
}
那么这个$和jQuery在这里是什么意思
function( $ ) {
}(jQuery)
答案 0 :(得分:2)
JavaScript中定义的命名空间是什么?
命名空间不是该语言定义的术语。它的常见用法仅指“分配给全局变量的一个对象,一段代码的所有公共函数都分配给它,这样它们就可以全局公开,而只使用一个全局变量”。
为什么我们必须写
return {
等等
否则,立即调用的函数表达式(IIFE)将返回undefined
。返回值是分配给全局变量(spa
)的值。
你需要它作为一个对象。
:
的左侧是属性名称,右侧是值(前面声明的本地变量,它恰好与属性同名)。
return {initModule}
似乎更有意义
这是JavaScript中的语法错误。对象由一组属性/值对组成。
那么这个$和jQuery在这里是什么意思
$
是函数表达式定义中的参数名称。
jQuery
是在调用该函数时立即作为第一个参数传递的值(立即执行)。