ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
> ### 多态:给[不同的对象]()发送[同一个消息](),这些对象会根据这个消息分别给出[不同的反馈]()。 ***** 多态背后的思想:将"做什么"和"谁去做以及怎样去做"分离。也就是将[不变的事物]()与[可变的事物]()分离。 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()) ~~~