js设计模式--鸭子类型

1.简介编程

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

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

2.duck typingspa

鸭子类型(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.复数形态
同一操做做用于不一样的对象上面,能够产生不一样的解释和不一样的执行结果。
给不一样的对象发送一样的消息的时候, 这些对象会根据这个消息分别给出不一样的反映。(闺蜜短信群发)code

相关文章
相关标签/搜索