面向对象的JS

2018-08-23  本文已影响0人  月魂king

1. 动态类型和鸭子类型

编程语言按照数据类型大体可以分为两类,一类是静态类型语言,另一类是动态类型语言

2. 多态

多态的实际意义是: 同一操作作用域不同的对象上面时,可以产生不同的解释和不同的执行结果。换言之: 给不同的对象发送同一条消息,这些对象会根据这条消息给出不同的反馈。

可以用下面的例子来解释:
在电影的拍摄现场,当导演喊出"action"时,主角开始背台词,照明师负责打灯光,后面的群众演员假装中弹倒地,道具师往镜头里撒雪花。在得到同一个消息时,每个对象都知道自己应该做什么。如果不利用对象的多态性,而是用面向过程的方式来编写这一段代码,那么相当于在电影开始拍摄后,导演每次都要走到每个人的面前,确认他们的职业分工,然后告诉他们应该做什么。如果映射到程序中,那么程序中将会充斥着条件分支语句。

将行为分布在各个对象中,并让这些对象各自负责自己的行为,这正是面向对象设计的优点

const googleMap = {
    show: () => console.log('开始渲染谷歌地图');
};
const baiduMap = {
    show: () => console.log('开始渲染百度地图');
};
const renderMap = (map) => {
    if (map.show instanceof Function) {
        map.show();
    }
};
renderMap(googleMap); // 输出:开始渲染谷歌地图
renderMap(baiduMap); // 输出:开始渲染百度地图
上一篇 下一篇

猜你喜欢

热点阅读