亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

JavaScript設計模式基礎之面向對象的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());

复制代码

输出如下:

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

 

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

點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消