Skip to content

Latest commit

 

History

History
33 lines (20 loc) · 1.75 KB

Class.md

File metadata and controls

33 lines (20 loc) · 1.75 KB

4.1 类理论

面向对象编程强调的是数据与操作数据的行为本质上是互相关联的(当然,不同的数据有不同的行为),因此好的设计就是把数据以及和它相关的行为打包(或者说封装)起来。这在正式的计算机科学中有时被称为数据结构。

所有字符串都是String类的一个实例,也就是说它是一个包裹,包含字符数据和我们可以应用在数据上的函数。

4.2 类的机制

4.2.2 构造函数

类实例是由一个特殊的类方法构造的,这方法名通常和类名相同,被称为构造函数。这个方法的任务就是初始化实例所需要的所有信息(状态)。

类构造函数属于类,而且通常和类同名。此外,构造函数大多需要new来调,这样语言引擎才知道你想要构造一个新的类实例。

4.3 类的继承

在面对类的语言中,你可以先定义一个类,然后定义一个集成前者的类。

后者通常被称为“子类”,前者通常被称为“父类”。

4.3.1 多态

4.3.2 多重继承

JavaScript 要简单得多:它本身并不提供“多重继承”功能。

4.4 混入

在继承或者实例化时,JavaScript 的对象机制并不会自动执行 复制行为。简单来说,JavaScript 中只有对象,并不存在可以被实例化的“类”。一个对象并不会被复制到其他对象,它们会被关联起来(参见第 5 章)。 由于在其他语言中类表现出来的都是复制行为,因此 JavaScript 开发者也想出了一个方法来模拟类的复制行为,这个方法就是混入。接下来我们会看到两种类型的混入:显式和隐式

4.4.1显示混入

原型

行为委托

这上卷最后的两张看不下去