1.动态类型语言和鸭子类型
什么是动态类型语言?什么又是静态类语言?
静态类型语言在编译时便已确定变量的类型,而动态类型语言的变量类型要到程序运行时,待变量被赋值后才会具有某种类型。
鸭子类型:如果它走起路来像鸭子,叫起来也像鸭子,那么它就是鸭子。
2.JavaScript多态
多态的含义:同一操作作用于不同的对象上面,可以产生不同的解释和不同的执行结果。
代码示例:
var makeSound = function(animal){ if(animal instanceof Duck){ console.log('嘎嘎嘎') }else if(animal instanceof Chicken){ console.log('咯咯咯') } }; var Duck = function(){}; var Chicken = function(){}; makeSound( new Duck() ); //嘎嘎嘎 makeSound( new Chicken ); //咯咯咯
这段代码体现的就是JavaScript的一个多态性,当我们分别向鸭和鸡发出“叫唤”的消息时,它们根据此消息做出了不同的反应。
多态背后的思想:把不变的部分隔离出来,把可变的部分封装起来,这就给予了程序的扩张能力