函数作为对象,应用javascript方法

函数作为对象,应用javascript方法,javascript,function,object,module,apply,Javascript,Function,Object,Module,Apply,我正在学习将javascript函数作为对象,但我正在努力学习这个与闭包和模块有关的特定示例 var MyModules = (function Manager() { var modules = {}; function define(name, deps, impl) { for (var i=0; i<deps.length; i++) { deps[i] = modules[deps[i]]; } modules[n

我正在学习将javascript函数作为对象,但我正在努力学习这个与闭包和模块有关的特定示例

var MyModules = (function Manager() 
    {
    var modules = {};
    function define(name, deps, impl) {
      for (var i=0; i<deps.length; i++) {
      deps[i] = modules[deps[i]];
    }
    modules[name] = impl.apply( impl, deps );
    }
    function get(name) {
        return modules[name];
    }
    return {
       define: define,
       get: get
    };
})();
MyModules.define( "bar", [], function(){
    function hello(who) {
        return "Let me introduce: " + who;
    }
    return {
        hello: hello
    };
} );
MyModules.define( "foo", ["bar"], function(bar){
    var hungry = "hippo";
    function awesome() {
        console.log( bar.hello( hungry ).toUpperCase() ); 
    }
    return {
        awesome: awesome
    };
} ) 
var bar = MyModules.get( "bar" );
var foo = MyModules.get( "foo" );
console.log(bar.hello( "hippo" )); // Let me introduce: hippo
foo.awesome(); // LET ME INTRODUCE: HIPPO
部分。应用方法的作用是什么?我知道第二个参数,但是调用方法的函数(对象??)的角色是什么,在apply方法中被接受为参数的函数的角色是什么,函数的返回值是什么,它与上面的函数有什么关系? 文件说: 语法

乐趣。应用(thisArg,[argsArray]) 参数

thisArg 这项服务的价值在于为《寻欢作乐》提供服务。请注意,这可能不是该方法看到的实际值:如果该方法是非严格模式代码中的函数,则null和undefined将替换为全局对象,原始值将被装箱

argsArray 一个类似数组的对象,指定应该调用fun的参数,或者如果不应该向函数提供参数,则为null或未定义。从ECMAScript 5开始,这些参数可以是类似于数组的通用对象,而不是数组。有关浏览器兼容性信息,请参见下文

返回值

使用指定的this值和参数调用函数的结果

我写了整个代码,因为我不知道自己是否理解得很好,也不想给出错误的信息

modules[name] = impl.apply( impl, deps );