2017-10-17 1 views
-2

Ich habe vor kurzem ein Interview und der Interviewer fragen mich einfach eine Frage und er sagt mir nehmen Sie Ihre Zeit ist die Frage ist "können Sie Dependency-Injektion wie eckig gutes Programm implementieren?" Ich versuche mein Bestes zu geben, aber es scheint, dass das Interview mein Programm nicht mag, also kann mir jemand einen einfachen Rat geben, wie kann ich es wie eckig umsetzen? DankeImplementierung der Abhängigkeitsinjektion wie eckig

+0

Sie müssen eine bessere Frage stellen, einschließlich Codebeispiele und die Fehler und eine ganze Menge mehr Informationen. – Hunter

+0

Fragte der Interviewer, wie man die Abhängigkeitsinjektion im Allgemeinen oder ein Abhängigkeitsinjektionssystem wie Angular verwendet? Eine bessere Frage wäre, warum ein Interviewer Sie auffordert, einen Dependency-Injektionscontainer zu codieren, wenn so viele von ihnen existieren? – jhenderson2099

+0

Er fragte mich nicht die Implementierung im Allgemeinen er will einfache Injektion Umsetzung wie eckig? Ich weiß sicher, es ist eine komische Frage –

Antwort

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); 
Verwandte Themen