zoukankan      html  css  js  c++  java
  • js设计模式--鸭子类型

    1.简介

    JavaScript没有提供传统面向对象语言的类式继承
    通过原型委托的形式实现对象与对象之间的继承
    没有对抽象类和接口的支持

    编程语言按数据类型可分为静态类型语言和动态类型语言
    变量的类型要到程序运行的时候, 待变量被赋予值之后,才会具有某种类型。
    代码数量更少, 理简洁,专注业务逻辑
    缺点:无法保证数据的类型
    在JavaScript中,我们对一个变量赋值时,不需要考虑它的类型。动态类型语言对yojgod型的宽容为JavaScript带来了很大的灵活性。

    2.duck typing

    鸭子类型(duck typing)如果它走起路来像鸭子,叫起来也是鸭子,那么它就是鸭子。
    只关注对象的行为,不关注对象本身面向接口编型 ,而不是面向实现编程,是设计模式中最重要的思想。代码演示:

        var duck = {
                         duckSinging:function(){
                                 console.log('呱呱呱');
                         }
                    }
                    alert('duck');
    
                    var chicken = {
                         duckSinging:function(){
                                 console.log('呱呱呱');
                         }
                    }
                    alert('chicken');
    
                    var chior = [];
    
                    var joinChior = function(animal){
                         if (animal && typeof animal.duckSinging === 'function') { //typeof就是判断参数是什么类型的实例                
                                 chior.push(animal);
                                 console.log('恭喜你加入合唱团');
                                 console.log('当前已募集'+chior.length+'只鸭子');
                         }
                    }
                    joinChior(duck);
                    joinChior(duck);
                    joinChior(chicken);

    3.复数形态
    同一操作作用于不同的对象上面,可以产生不同的解释和不同的执行结果。
    给不同的对象发送同样的消息的时候, 这些对象会根据这个消息分别给出不同的反映。(闺蜜短信群发)

  • 相关阅读:
    warshall、
    简单的php单例再次理解
    windows操作系统,在phpstudy集成环境,安装redis扩展,并启用redis服务和客户端
    php单例模式相关知识
    jui结合ajax非表单提交刷新页面
    php截取想要的字符串
    xmlToArray和arrayToXml
    jquery时间戳转换成格式化时间
    腾讯地图调用获取经度纬度代码
    随机生成自定义位数英文字符串
  • 原文地址:https://www.cnblogs.com/jerry666/p/5258798.html
Copyright © 2011-2022 走看看