美文网首页
面向对象的JS

面向对象的JS

作者: 月魂king | 来源:发表于2018-08-23 11:40 被阅读0次

1. 动态类型和鸭子类型

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

  • 静态类型语言在编译时便已确定变量的类型。
  • 动态类型语言的变量类型要到程序运行时,等变量被赋予某个值之后,才会具有某种类型。
    动态类型语言对变量类型的宽容给实际编码带来了很大的灵活性。由于无需进行类型检测,我们可以尝试调用任何对象的任意方法,而无需去考虑它原本是否被设计为拥有该方法。
    这一切都建立在鸭子类型(duck typing)的概念上。通俗说法是如果它走起来像鸭子,叫起来也像鸭子,那么它就是鸭子。

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); // 输出:开始渲染百度地图

相关文章

  • JS面向对象精要(二)_函数

    JS面向对象精要(一)_原始类型和引用类型JS面向对象精要(二)_函数JS面向对象精要(三)_理解对象JS面向对象...

  • JS面向对象精要(三)_理解对象

    JS面向对象精要(一)_原始类型和引用类型JS面向对象精要(二)_函数JS面向对象精要(三)_理解对象JS面向对象...

  • JS面向对象精要(四)_构造函数和原型对象

    JS面向对象精要(一)_原始类型和引用类型JS面向对象精要(二)_函数JS面向对象精要(三)_理解对象JS面向对象...

  • JS面向对象精要(五)_继承

    JS面向对象精要(一)_原始类型和引用类型JS面向对象精要(二)_函数JS面向对象精要(三)_理解对象JS面向对象...

  • js 面向对象和面向过程

    js 面向对象和面向过程

  • JavaScript笔记(一)

    一、面向对象面向过程的区别 1、什么是js对象 js对象:属性和方法的集合,js所有数据都可以看成对象...

  • JS面向对象

    JS面向对象入门 1、面向对象语言概念面向对象语言主要包括 类、对象、封装、多肽。2、面向对象的编程思想面向过程思...

  • 面向对象OOP--JS

    作者:烨竹 JS面向对象简介 JS名言:万物皆对象 JS面向对象比PHP简单很多;因为JS中没有class关键字,...

  • 2018-01-18

    js中的面向对象核心 js是基于对象的编程语言,在后面的学习中我们通过一种模式使其转化成为面向对象的语言。js面向...

  • 浅谈JS中的面向对象

    浅谈JS中的面向对象 本文主要说说本人在JS中对面向对象的理解。 计算机编程语言主要分为面向过程式编程和面向对象式...

网友评论

      本文标题:面向对象的JS

      本文链接:https://www.haomeiwen.com/subject/yardiftx.html