类理论

类/继承描述了一种代码组织形式,类和继承是对真实世界中事物的抽象和建模。

类意味着复制,传统的类被实例化时,它的行为会被复制到实例中。类被继承时,行为也会被 复制到子类中

“类设计模式”

类其实是一种软件设计模式,是一种可选的代码抽象。

JavaScript中的"类"

JavaScript中并没有真正的类,只有近似类的语法, 因为JavaScript并不会像类那样自动创建对象 的副本。

类的机制

类是一张蓝图,为了获得真正可交互的对象必须按照类来建造(实例化)一个东西。

类实例是由一个特殊的类方法构造的,被称为构造函数

类的继承

定义好一个子类后,子类会包含父类行为的原始副本,但是也可以重写所有继承的行为甚至定义新行为

多态

方法引用继承层次中高层的方法,这种技术被称作多态

混入

由于其他语言中类表现出来的都是复制行为,因此JavaScript开发者也想出了一个方法来模拟类的 复制行为,这个方法就是混入

显式混入

简单的显式混入的例子:

1
2
3
4
5
6
7
8
9
    function mixin(sourceObj, targetObj) {
        for (var key in sourceObj) {
            if (!(key in targetObj)) {
                targetObj[key] = sourceObj[key]
            }
        }

        return targetObj
    }

隐式混入

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
    var Something = {
        cool: function() {
            ...
        }
    }

    var Another = {
        cool: function() {
            Something.function.cool.call(this)
        }
    }