读《你不知道的JavaScript》之再次认识“类“

类仅仅是一个抽象的表示, 它描述了栈需要做的所有事, 但是它本身并不是一个"栈".

书中把类比喻为建筑蓝图,建筑为实例,你并不能在类中加工什么,类也不能用来操作数据.
它的存在只为描述: 我需要一个怎样的实例,里面有哪些数据,有做甚麽的方法,它是对未来实例的规划, 是一种蓝图.

类实例是由一个特殊的类方法构造,这个方法名通常与类名相同,名为构造函数,其任务即初始化实例需要的所有状态.
类构造函数属于类的一部分,且通常和类同名,所以引用书中原句:
“是不是意味着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,而具备这些特性的对象会被判定为其他类型.

类的继承分为“多态"与“多重继承",多重继承又包含了混入,混入实际上是在模仿类复制.

我没有介绍混入模式,其用以模拟类的复制, “这会产生复杂、丑陋、脆弱的语法,代码更加难以阅读.”
看到书中给出的例子时我有些疑惑,构造这种值难以预料的结构,得到的回报会大于付出的代价麽?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值