Javascript
面向对象编程
对象的抽象
抽象 是指一种归纳或总结,对象 是现实世界物体特征的实体。万事万物不论大小皆可看做对象, 类 则是对各种不同对象的 归纳总结,类是对象的 抽象表示形式。
例如,男演员Jack可以看做是一个对象,女演员Rose也可以看过是一个对象,而两者会被统一归纳为Person或者Human的类(或抽象)。每一个对象都有其独特的属性(Property)或功能(Function),而归纳总结出来的类则具有不同对象的相同属性或功能。
基于类的面向对象语言是面向对象世界里的主流。虽然大多数面向对象开发语言都使用类来完成面向对象编程,但类不是面向对象编程的实质内涵。面向对象的实质内涵是将所有业务逻辑单元都视为一个对象(即,对象是目的或结果),且类不是唯一用来完成面向对象编程的方法。
面向对象不能被当做面向类,否则会进入误区。对象和类的关系相当于一般程序设计语言中的 变量 和 变量类型 的关系。所以,有时类也被称为是一种数据类型,可以看做抽象数据类型的具体实现。此时的数据类型则是 数据 和 操作 的集合。
面向对象与面向过程的区别
面向过程程序设计,即结构化程序设计,诸如Pascal、C。
面向对象程序设计解决了结构化程序设计代码复用的难题,如C++、C#、Java、JavaScript、Python等都是。
面向过程也是把程序定义为“数据+作用于数据的操作算法”,但最重要的区别是:面向过程编程 使用过程操作数据结构, 而面向对象编程将过程和数据结构捆绑,使对象 操作自己的数据结构。
JavaScript的类
类的创建
JavaScript可以用关键字 class
进行赋值。
1 | class Rectangle { |
在MDN Web Docs中,对JavaScript类的定义如下:
实际上,类是“特殊的函数”,就像你能够定义的函数表达式和函数声明一样,类语法有两个组成部分:类表达式 和 类声明。
1 | function HelloWrold(){ //To use keyword `function` instead of `class` to define a class |
构造器
构造器(Constructor),或称
构造方法,一种用于创建和初始化class
创建的对象的特殊
方法(Methods)。constructor([arguments]) { ... }
,
其中 arguments
看情况而定,可以省略。
注意:
- 在一个类中只能有一个名为
constructor
的特殊方法。 一个类中出现多次构造函数 (constructor)方法将会抛出一个SyntaxError
错误。 - 在一个构造方法中可以使用
super
关键字来 调用一个父类的构造方法。 - 如果没有显式指定构造方法,则会添加默认的 constructor 方法。
1 | class Polygon { |