标签:工具 调用 function fun run nbsp efi UNC 循环
<script>
//模块管理工具,MyModules
var MyModules = (function Manager() {
var modules = {}; //创建一个空对象
function define(name, deps, impl) {
/*
"data",[],function(){
var name = "miku";
function getName(){
return name;
}
return {
getName:getName
}
}
1、首先name:‘date‘ deps:[] impl:fun() modules = {}
2、for循环 由于deps.length为0,所以不循环
3、modules[name] = impl.apply(impl, deps);
(1) modules[‘date‘] = fn.apply(fn, deps);
modules = {
date:{
getName:getName
}
}
*/
/*
"app", ["data"], function(data){
function run(){
console.log(data.getName());
}
return {
run:run
}
}
1、首先name:‘app‘ deps:[‘date‘] impl:fn()
modules = {
date:{
getName:getName
}
}
2、for循环 deps.length = 1;
当i = 0时,
所以:[‘date‘][0] = modules[deps[0]] => modules[‘date‘] => {getName : getName}
<=> date = {getName : getName}
当i = 1时,
1>1,不成立
3、modules[name] = impl.apply(impl, deps);
modules[‘app‘] = fn().apply(fn(),[‘date‘]);
modules = {
date:{
getName:getName
},
app: {
run:run
}
}
*/
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];
}
function mod(){
console.log( modules );
}
return {
define: define,
get: get,
mod: mod
}
})();
//定义一个模块,data
MyModules.define("data",[],function(){
var name = "miku";
function getName(){
return name;
}
return {
getName:getName
}
});
//定义一个模块,app
//该模块依赖data模块
MyModules.define("app", ["data"], function(obj){
/*
调用data对象的方法
*/
function run(){
console.log(obj.getName());
}
return {
run:run
}
});
//取出app模块
var app = MyModules.get("app");
//调用app模块的run方法
MyModules.mod();//返回对象
app.run();
这是我对这个模块的每一步的详解,
自己添加模块
<script>
//模块管理工具,MyModules
var MyModules = (function Manager() {
var modules = {}; //创建一个空对象
function define(name, deps, impl) {
/*
"data",[],function(){
var name = "miku";
function getName(){
return name;
}
return {
getName:getName
}
}
1、首先name:‘date‘ deps:[] impl:fun() modules = {}
2、for循环 由于deps.length为0,所以不循环
3、modules[name] = impl.apply(impl, deps);
(1) modules[‘date‘] = fn.apply(fn, deps);
modules = {
date:{
getName:getName
}
}
*/
/*
"app", ["data"], function(data){
function run(){
console.log(data.getName());
}
return {
run:run
}
}
1、首先name:‘app‘ deps:[‘date‘] impl:fn()
modules = {
date:{
getName:getName
}
}
2、for循环 deps.length = 1;
当i = 0时,
所以:[‘date‘][0] = modules[deps[0]] => modules[‘date‘] => {getName : getName}
<=> date = {getName : getName}
当i = 1时,
1>1,不成立
3、modules[name] = impl.apply(impl, deps);
modules[‘app‘] = fn().apply(fn(),[‘date‘]);
modules = {
date:{
getName:getName
},
app: {
run:run
}
}
*/
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];
}
function mod(){
console.log( modules );
}
return {
define: define,
get: get,
mod: mod
}
})();
//定义一个模块,data
MyModules.define("data",[],function(){
var name = "miku";
function getName(){
return name;
}
return {
getName:getName
}
});
//定义一个模块,data2
MyModules.define("data2",["data"],function(){
var name = "klkx";
function getName(){
return name;
}
return {
getName:getName
}
});
//定义一个模块,app
//该模块依赖data模块
MyModules.define("app", ["data"], function(data){
/*
调用data对象的方法
*/
function run(){
console.log(data.getName());
}
return {
run:run
}
});
//定义一个模块,app2
//该模块依赖data模块
MyModules.define("app2", ["data2"], function(data){
/*
调用data对象的方法
*/
function run(){
console.log(data.getName());
}
return {
run:run
}
});
//取出app模块
var app = MyModules.get("app");
var app2 = MyModules.get("app2");
//调用app模块的run方法
MyModules.mod();//返回对象
app.run();
app2.run();
</script>
标签:工具 调用 function fun run nbsp efi UNC 循环
原文地址:https://www.cnblogs.com/jokes/p/9397223.html