您现在的位置是:网站首页> 内容页

JavaScript设计模式基础之面向对象的JavaScript(二)

  • 百老汇网址官网
  • 2019-03-02
  • 217人已阅读
简介多态多态的实际含义:同一操作作用与不同的对象上面,可以产生不同的解释和不同的执行结果,就是说,给不同的对象发送同一个消息的时候,这些对象会根据这个消息分别给出不同的反馈代码如下:   

多态

多态的实际含义:同一操作作用与不同的对象上面,可以产生不同的解释和不同的执行结果,就是说,给不同的对象发送同一个消息

的时候,这些对象会根据这个消息分别给出不同的反馈

代码如下:

  

     class Duck{} class Chicken{} let make = function(animal){ //instanceof运算符用来判断一个构造函数的prototype属性所指向的对象是否存在另外一个要检测对象的原型链上 if(animal instanceof Duck){ console.log("gagaga") }else if(animal instanceof Chicken){ console.log("gegege") } } make(new Duck()) make(new Chicken())

这段代码实现了多态性,当我们分别向鸭和鸡发出叫指令时候,他们根据消息做出了不同的反应

运行结果:

但是这个代码确不能让人满意 因为如果我们还需要增加对象 那么会去反复改动make函数

多态的思想是把变和不变分离开来,改写一下这段代码

改写后代码如下:

     // class Duck{} Duck.prototype.sound = function(){ console.log("gagaga") } // class Chicken{} Chicken.prototype.sound = function(){ console.log("gegege") } // class Dog{} Dog.prototype.sound = function(){ console.log("wangwangwang") } let make = function(animal){ animal.sound() } make(new Duck()) make(new Chicken()) make(new Dog())

输出如下:

这样就已经把对象和行为完全分离了

 

文章评论

Top