请查看此链接以获取我的完整代码(尽管很简单)
问题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
};
对我来说,return{initModule}似乎更有意义,上面的代码是什么意思,它的语法是什么?
最后但并非最不重要的是,通常我会以类似的格式编写函数
function ( $var) {
// function code here
}
那么这个$和jQuery在这里意味着什么
function( $ ) {
}(jQuery)
JavaScript中定义的名称空间是什么?
命名空间不是由语言定义的术语。它的常见用法只是指"一个对象,分配给一个全局变量,一段代码的所有公共函数都分配给它,这样它们就可以在只使用单个全局变量的情况下全局公开"。
为什么我们必须编写
return {
等
否则,立即调用的函数表达式(IIFE)将返回undefined
。返回值是分配给全局变量(spa
)的值。
你需要它成为一个物体。
:
的左手边是属性名称,右手边是值(这是之前声明的局部变量,恰好与属性同名)。
return {initModule}
似乎更有意义
这是JavaScript中的语法错误。对象由一组属性/值对组成。
那么这个$和jQuery在这里意味着什么
$
是函数表达式定义中参数的名称。
jQuery
是在调用该函数时(立即调用)作为第一个参数传递的值。