百度web前端的一道筆試題(CarFactory)


 今天參加了百度2013年校園招聘杭州站的筆試,崗位是WEB前端工程師(上海)。有一道題目印象比較深,大概是因為筆者是從Java開始學編程的原因吧,對於面向對象和繼承的一些東西特別敏感。

 

  題目大概是這樣的: 有一個CarFactory,專門產生一些汽車的對象,汽車類型有Bus, Truck, 和 Jeep, 他們有各自的引擎,分別為BusEngine, TruckEngine 和 JeepEngine,設計這樣一個Factory。

 

  一開始覺得挺難,在自己的JavaScript開發過程中也沒有寫過類似的工廠方法。不過在仔細的思考下,大概還是寫出來了。貼上自己的答案,只寫了Bus,其它省略了。

 

                //所有汽車的父類,每輛車都有一個引擎
           var Car = function(engine){
                    this.engine = engine;
                };
            
           //引擎的父類構造對象,為它設置了一個引擎的名字,和一個啟動的方法(這個在筆試里面沒有要求)
                var Engine = function(engineName){
                    this.engineName = engineName;
               };
            
                Engine.prototype.run = function(){
                    console.log(this.engineName + ' is running');
                };
            
           //BusEngine的構造方法
                var BusEngine = function(){
                    Engine.call(this, 'busEngine');
                };
            
                BusEngine.prototype = new Engine();
            
           //Bus的構造方法
                var Bus = function(){
                    Car.call(this, new BusEngine());
                };
            
           //Car工廠方法
                var CarFactory = function(type){
                    return new type();
                }
       
           //示例
                var oneBus = CarFactory(Bus);
                oneBus.engine.run();            

  學前端才三四個月,因為同學的建議,投了百度。學的東西挺多,精通的太少。這也是我在筆試時能想到的最好的寫法了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM