// define 声明模块  require使用模块

function define(moduleName, dependList, factory){
    if(!this[__filename]){ this[__filename] = {} }
    // 依赖缓存
    this[__filename][moduleName] = {moduleName: moduleName, depends: dependList, factory: factory}
}

function require(moduleList, callback){
    var dependModules = []
    for(var i=0; i<moduleList.length; i++){
        var module = this[__filename][moduleList[i]]
        if(module.depends.length){
            // 依赖递归
            dependModules[i] = module.factory.apply(null, require(module.depends, module.factory))
        }else{
            dependModules[i] = module.factory.apply(null)
        }
    }
    callback.apply(null, dependModules)
    return dependModules

}
define('test', [], function(){
    return 'test'
})
define('addText', ['test'], function(test){
    return 'is ' + test
})
define('name', ['addText'], function(addText){
    return 'lhh ' + addText
})
define('age', [], function(){
    return '28'
})

require(['name', 'age'], function(name, age){
    console.log(name, age)
})