首页 > 编程语言 > 详细

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

时间:2018-09-15 01:06:48      阅读:74      评论:0      收藏:0      [点我收藏+]

标签:prototype   console   {}   模式   ons   存在   pro   scrip   new   

多态

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

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

代码如下:

  

     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());

输出如下:

技术分享图片

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

 

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

标签:prototype   console   {}   模式   ons   存在   pro   scrip   new   

原文:https://www.cnblogs.com/y-y-y-y/p/9649605.html

(0)
(0)
   
举报
评论 一句话评论(0
0条  
登录后才能评论!
© 2014 bubuko.com 版权所有 鲁ICP备09046678号-4
打开技术之扣,分享程序人生!
             

鲁公网安备 37021202000002号