🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
> **多态:给不同的对象发送同一个消息,这些对象会根据这个消息分别给出不同的反馈。** 多态背后的思想:将"做什么"和"谁去做以及怎样去做"分离。也就是将**不变的事物**与**可变的事物**分离。 ### 1.对象的多态性 ~~~ function makeSound(animal){ animal.sound(); } var Duck = function(){ } Duck.prototype.sound = function(){ console.log("鸭叫"); } var Chicken = function(){}; Chicken.prototype.sound = function(){ console.log("鸡叫") } makeSound(new Duck); ~~~ 现在,我们向鸭和鸡发出"叫唤"的消息,它们接收到消息后分别作出不同的反应。 ### 2.例子 * 在电影拍摄现场,当导演喊出action,主角开始背台词,照明师负责打灯光,后面的群众演员假装中枪倒地,道具师往镜头里撒上雪花。在得到同一个消息时,每个对象都知道自己应该做什么。 * 利用对象的多态性,导演在发布消息时,不必考虑各个对象接到消息后应该做什么。对象应该做什么应该是实现约定好的,而不是临时决定的。每个对象应该做什么应该已经成为该对象的一个方法,被安装在对象内部,每个对象对自己的行为负责。所以这些对象可以根据同一消息,有条不紊的各自工作。 ~~~ function action(person){ person.act(); } var Lighter = function(){} Lighter.prototype.act = function(){ console.log("打开片场的灯光") } var Commoner = function(){} Commoner.prototype.act = function(){ console.log("群众演员倒地") } var Leader = function(){} Leader.prototype.act = function(){ console.log("主角背台词") } action(new Lighter()) ~~~