您的位置:首页 > Web前端

百度web前端的一道笔试题(CarFactory)

2012-10-20 15:59 477 查看
今天参加了百度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();


学前端才三四个月,因为同学的建议,投了百度。学的东西挺多,精通的太少。这也是我在笔试时能想到的最好的写法了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: