使用JavaScript进行面向对象开发 互动版

父类型的构造函数

对于由function创建的类型,其本身是无法使用$.extend进行继承的。

就像Java、C#等语言一样,继承时,子类必须在构造函数时调用父类型的构造函数。JavaScript实现类继承的第一步便是调用父类型的构造函数。

function leader(name,age){
    worker.apply(this,arguments);
}

上述代码就已经完成了对父类型构造函数的调用,这里我来详细解释一下:

1、apply这是JavaScript内置的一个方法,只要是声明成为function的对象,都会拥有该成员。对于后台技术较高的同学,你可以将apply理解为反射调用。对于并不了解反射的同学,可以这样理解:我们正常情况下调用一个方法是对象.方法名(参数列表),使用apply的话,我们就是方法名.apply(对象,参数列表),顺序不一样了

2、arguments这个关键字只能在function内部使用,表示的是参数列表,在上述示例中arguments中包含的就是name和age。

3、通过worker.apply(this,arguments),相当于使用当前实例和当前参数列表执行了一次worker方法,也就意味着将当前实例和name,age进行了一次worker的构造。