面向对象编程
面向对象编程是一种命令式编程,主要有基于类和基于原型两种方式。
基于类的面向对象语言是建立于类和实例这两个不同实体的概念之上:
- 类定义了一些可使特定的对象集合特征化的属性,并且是抽象的,而不是其所描述的对象集合中的任何特定的个体;
- 实例是一个类实例化的结果,是其成员之一,并且具有和父类完全一致的属性,不多不少。
基于类和基于原型的面向对象语言之间的不同大致可以概括为:
对比项 | 基于类 | 基于原型 |
---|---|---|
类 vs. 实例 | 类和实例是不同的实体 | 所有对象可以继承自其他对象 |
定义 | 用类定义去定义一个类,用构造方法实例化一个类 | 用构造函数定义和创建一组对象 |
创建新对象 | 用 new 运算符创建一个对象 |
同左 |
构造对象层级 | Construct an object hierarchy by using class definitions to define subclasses of existing classes. | Construct an object hierarchy by assigning an object as the prototype associated with a constructor function. |
继承模型 | Inherit properties by following the class chain. | Inherit properties by following the prototype chain. |
属性扩展 | Class definition specifies all properties of all instances of a class. Cannot add properties dynamically at run time. | Constructor function or prototype specifies an initial set of properties. Can add or remove properties dynamically to individual objects or to the entire set of objects. |