函数作为对象,应用javascript方法
我正在学习将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
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 );