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


    多态

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

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

    代码如下:

      

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

    输出如下:

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

  • 相关阅读:
    nio/mina(三) mina传对象
    Android系统中长按事件的实现机制解析
    android游戏寻路算法
    Xcode 常用快捷键及代码自动排版
    java 日期加天数得到新的日期
    cygwin 中文乱码问题
    Android 中自定义手势
    mina服务端与c++客户端通信1
    java NIO 和阻塞I/O的区别
    Android读写文件
  • 原文地址:https://www.cnblogs.com/y-y-y-y/p/9649605.html
Copyright © 2020-2023  润新知