2017-10-17 80 views
-2

我最近有一个采访和面试官只是问我一个问题,他说我把你的时间问题是“你可以实现像角度良好的程序的依赖注入?”我尝试尽我所能,但它似乎面试不喜欢我的程序,所以任何人都可以给我一个简单的建议,我怎么能实现它像角? 谢谢依赖注入的实现像角

+0

你需要问一个更好的问题,包括代码示例和错误以及更多信息。 – Hunter

+0

访问者是问如何实现一般的依赖注入,还是像Angular这样的依赖注入系统?一个更好的问题是为什么一个面试官要求你编写一个依赖注入容器,当他们有很多存在时? – jhenderson2099

+0

他没有问我一般的实现他希望简单的注入实现像角?我知道这确实是一个奇怪的问题 –

回答

0
var WelcomeController = function (Greeter) { 
    document.write(Greeter.greet()); 
}; 

var Injector = { 

    dependencies: {}, 

    process: function(target) { 
     var FN_ARGS = /^function\s*[^\(]*\(\s*([^\)]*)\)/m; 
     var FN_ARG_SPLIT = /,/; 
     var FN_ARG = /^\s*(_?)(\S+?)\1\s*$/; 
     var STRIP_COMMENTS = /((\/\/.*$)|(\/\*[\s\S]*?\*\/))/mg; 
     var text = target.toString(); 
     var args = text.match(FN_ARGS)[1].split(','); 

     target.apply(target, this.getDependencies(args)); 
    }, 

    getDependencies: function(arr) { 
     var self = this; 
     return arr.map(function(value) { 

      return self.dependencies[value]; 
     });    
    }, 

    register: function(name, dependency) { 
     this.dependencies[name] = dependency; 
    } 

}; 

var RobotGreeter = { 
    greet: function() { 
    return 'Domo Arigato'; 
    } 
}; 

var OtherGreeter = { 
    greet: function() { 
     return 'That will do pig.'; 
    } 
}; 

// Randomly register a different greeter to show that WelcomeController is truly dynamic. 
Injector.register('Greeter', Math.random() > 0.5 ? RobotGreeter : OtherGreeter); 

Injector.process(WelcomeController);