JavaScript 中的命名空间是什么以及如何从命名空间导出方法?



请查看此链接以获取我的完整代码(尽管很简单)

问题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是在调用该函数时(立即调用)作为第一个参数传递的值。

最新更新