美文网首页
js中的多态

js中的多态

作者: 一方天地sq | 来源:发表于2017-05-04 18:39 被阅读0次

多态的实际含义是:同意操作作用于不同的对象上面可以产生不同的解释和不同的执行结果。换句话说,给不同的最像发送同一个消息的时候,这些对象会根据这个消息分别给出不同的反馈。
一段"多态" 的js代码

var makeSound = function (animal){
  if(animal instanceof Duck){
   console.log('嘎嘎嘎')
  }else if(animal instanceof Chicken){
   console.log('咯咯咯')
  }
}
var Duck = function () {
  
};
var Chicken = function () {
  
};
makeSound(new Duck());
makeSound(new Chicken());

上面的这段代码已经符合了对多态的定义,但是这样的"多态"是无法令人满意的,如果在增加一种动物,例如狗,我们必须改动makeSound函数,才能让狗也发出叫声,修改代码总是危险的,修改的地方越多,程序出错的可能性越大,而且当动物种类越多,makeSound有可能变成一个巨大的函数。

"多态"的思想把不变的部分隔离出来,把可变的部分封装起来,这给予我们扩展程序的能力,相对于修改代码,仅仅增加代码就能完成相同的功能,这样就先的优雅和安全很多。下面是改写后的代码。

var makeSound = function (animal){
 animal.sound()
}
var Duck = function () {
}
Duck.prototype.sound = function () {
  console.log('嘎嘎嘎')
}
var Chicken = function () {
}
Chicken.prototype.sound = function () {
  console.log('咯咯咯')
}
makeSound(new Duck());
makeSound(new Chicken());

如果以后要增加一个狗只要简单的追加一些代码就可以了,从而最大成度的保持了代码的可维护性

var Dog = function () {
}
Dog.prototype.sound = function () {
  console.log('汪汪汪')
}
makeSound(new Dog());

相关文章

  • 7 js之this

    js中的this具有多态性

  • js中的多态

    多态的实际含义是:同意操作作用于不同的对象上面可以产生不同的解释和不同的执行结果。换句话说,给不同的最像发送同一个...

  • JS中的类与对象、封装、继承、多态(四)

    四、多态 多态就是同一个方法的多种调用方式。在js中来实现多态更多的是通过对传出参数进行判断来实现多种调用方式。 ...

  • 多态

    1.含义: 2.例子 1).最普通的"多态" 2).对象的多态性 3.多态与继承的关系 因为js与oc这些是动态语...

  • js跳出循环:break 、continue 、return

    跟许多多态语言一样,js也有break,continue,return 面向对象编程语法中我们会碰到break ,...

  • 2019-08-27

    Javascript的多态性 1.js不支持重载 /*****************说明js不支持重载*****...

  • JS中类的继承封装和多态

    子类继承父类的属性和方法(原生继承,call继承,寄生组合继承,ES6中class类继承)原生继承:让子类的原型指...

  • Prototype

    Prototype是js面向对象中实现多态的核心,或者说是区别于普通面向对象语言如java等的灵魂所在,越是这种玩...

  • JS面向对象--基础知识(2)

    面向对象的特性: 封装 继承 多态 封装作用:方便代码的维护,提高代码的复用性,更安全的访问数据的方式注意:js中...

  • iOS中多态,继承,分类,扩展

    多态 多态:不同对象以自己的方式响应相同的消息的能力叫做多态。程序中的多态:父类指针指向子类对象多态的原理 动态绑...

网友评论

      本文标题:js中的多态

      本文链接:https://www.haomeiwen.com/subject/dfvltxtx.html