2017-10-17 79 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);