类仅仅是一个抽象的表示, 它描述了栈需要做的所有事, 但是它本身并不是一个"栈".
书中把类比喻为建筑蓝图,建筑为实例,你并不能在类中加工什么,类也不能用来操作数据.
它的存在只为描述: 我需要一个怎样的实例,里面有哪些数据,有做甚麽的方法,它是对未来实例的规划, 是一种蓝图.
类实例是由一个特殊的类方法构造,这个方法名通常与类名相同,名为构造函数,其任务即初始化实例需要的所有状态.
类构造函数属于类的一部分,且通常和类同名,所以引用书中原句:
“是不是意味着JavaScript中实际上有类呢?简单来说:不是.”
class Car inherits Vehicle {}
如上,继承语法,括号内是car类内容,仅加上"inherits Vehicle"便可继承Vehicle.
多态:
Car类继Vehicle类, 内有drive方法,在Car类再写drive方法,方法内部使用inherit drive()代码片段以调用vehicle的drive方法,这是在子类中重写父类的同名方法(自然,你可以选择重写不同名方法,但多态存在是为了在需要时能自动调用合适的对象中的方法,这样的不同名多态结构在调用时或许会有些混乱),这种技术被称为多态/虚拟多态.
class Car inherits Vehicle {
drive() {
inherited: drive();
}
}
JavaScript中,除Object外,其它类型只是具备其类型特性的Object,而具备这些特性的对象会被判定为其他类型.
类的继承分为“多态"与“多重继承",多重继承又包含了混入,混入实际上是在模仿类复制.
我没有介绍混入模式,其用以模拟类的复制, “这会产生复杂、丑陋、脆弱的语法,代码更加难以阅读.”
看到书中给出的例子时我有些疑惑,构造这种值难以预料的结构,得到的回报会大于付出的代价麽?