JavaScript设计模式基础之面向对象的JavaScript(二)
标签:
JavaScript
多态
多态的实际含义:同一操作作用与不同的对象上面,可以产生不同的解释和不同的执行结果,就是说,给不同的对象发送同一个消息
的时候,这些对象会根据这个消息分别给出不同的反馈
代码如下:
class Duck{}; class Chicken{}; let make = function(animal){ //instanceof运算符用来判断一个构造函数的prototype属性所指向的对象是否存在另外一个要检测对象的原型链上 if(animal instanceof Duck){ console.log('gagaga'); }else if(animal instanceof Chicken){ console.log('gegege'); } } make(new Duck()); make(new Chicken());
这段代码实现了多态性,当我们分别向鸭和鸡发出叫指令时候,他们根据消息做出了不同的反应
运行结果:
但是这个代码确不能让人满意 因为如果我们还需要增加对象 那么会去反复改动make函数
多态的思想是把变和不变分离开来,改写一下这段代码
改写后代码如下:
//鸭 class Duck{}; Duck.prototype.sound = function(){ console.log('gagaga'); } //鸡 class Chicken{}; Chicken.prototype.sound = function(){ console.log('gegege') } //狗 class Dog{}; Dog.prototype.sound = function(){ console.log('wangwangwang') } let make = function(animal){ animal.sound(); } make(new Duck()); make(new Chicken()); make(new Dog());
输出如下:
这样就已经把对象和行为完全分离了
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦