Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
面向对象的Javascript或Jquery代码实现_Javascript_Jquery - Fatal编程技术网

面向对象的Javascript或Jquery代码实现

面向对象的Javascript或Jquery代码实现,javascript,jquery,Javascript,Jquery,如何使用Javascript或Jquery实现以下场景 创建工厂以创建不同类型的动物 e、 蛇、狮子、老虎、鱼、鸟等。 它们每一个都来自动物类 animals基类有一些属性每个派生类都有一个特定动物特有的特殊方法 e、 鱼、游泳、鸟、苍蝇、蛇、爬行、狮子、奔跑等 该ui在左侧显示一个下拉列表,其中包含3个值“土地”、“水”和“空气” 在选择值时,右侧应显示适当的动物,例如水=>鱼、空气=>鸟、陆地=>蛇、狮子 我可以理解,我可以在这里使用原型或观察者模式,但我坚持正确的实现。但是仍然对正确的方法

如何使用Javascript或Jquery实现以下场景

创建工厂以创建不同类型的动物 e、 蛇、狮子、老虎、鱼、鸟等。 它们每一个都来自动物类 animals基类有一些属性每个派生类都有一个特定动物特有的特殊方法 e、 鱼、游泳、鸟、苍蝇、蛇、爬行、狮子、奔跑等

该ui在左侧显示一个下拉列表,其中包含3个值“土地”、“水”和“空气” 在选择值时,右侧应显示适当的动物,例如水=>鱼、空气=>鸟、陆地=>蛇、狮子


我可以理解,我可以在这里使用原型或观察者模式,但我坚持正确的实现。但是仍然对正确的方法感到困惑,即使我进入了某些领域,在编码方面我也陷入了困境。

这是一个基本的类结构。请通读评论以获得解释。正如其他人所说,阅读addy ossmani的书将是帮助您更彻底地理解OOP的一个很好的来源

//基类 功能车辆类型,车轮类型,名词,中等{ this.type=type this.wheeltype=wheeltype this.noun=名词 这个.中等=中等 } 车辆原型={ //在车辆上声明DO,因为它是所有子类的共同点,所有子类 //委托给同一个函数 做:功能{ 在${this.medium}上返回'I love${this.noon}my${this.color}${this.type}` } } 函数Carmodel,颜色{ //运行构造函数,传入当前 //对象上下文 Vehicle.callthis'car',4',driving',street' //设置汽车的属性 this.model=model 这个颜色 } //这扩展了车辆类别 Car.prototype=新车 //这种方法是汽车独有的 Car.prototype.drive=功能{ 在我的${this.model}中沿${this.medium}返回'cruisin'` } //您可以使用类语法 级船舶扩展车辆{ 构造器模型、颜色{ //super调用已设置上下文的构造函数 超级“船”,0,“帆船”,“海洋” this.model=model 这个颜色 } //船的独特方法 航行{ return`I在一个${this.type}母亲的f**ker上` } } 捷茨基级扩展车辆{ 构造器模型、颜色{ 超级“杰茨基”,0,“骑马”,“海洋” this.model=model 这个颜色 } 骑{ return`I在一个${this.type}母亲的f**ker上` } } //从构造函数创建对象 var car=新车“六辆一汽”,“绿色” var船=新船“里维埃拉”,“24卡罗黄金” var jetski=新jetski'Seadoo'、'green' console.log'car.doing->',car.doing 控制台.日志'car.drive->',car.drive 控制台.记录'ship.do->',ship.do 控制台.日志'ship.sail->',ship.sail var车辆=[汽车、轮船、捷茨基] 功能过滤器膜介质,车辆{ 返回车辆.过滤器功能车辆{ 返回车辆。中等===中等 } } console.log “海洋”过滤膜,车辆
请提供您的尝试。我建议您开始阅读这本很棒的书,使用一个使您的下拉列表保持最新的factory函数…请缩小您的问题范围,这也是broad@ashes321-我不会因为投了反对票而太激动,不是我;您可以随时删除问题,然后重新提问并进行更多澄清。我的建议是,做点什么,然后问那个问题。换句话说,有问题的幼稚实现会产生更好的问题,我不知道,请告诉我这有多恭敬,这会吸引反对票。因为所有对象都有相同的api,所以您可以使用duck punching来检查对象之间的共性。是,将它们放入数组中,并根据需要过滤结果[car,boat].filterx=>x.medium=='street'