继承
每个类有3个部分:1,是构造函数内的,是供实例化对象复制用的。2,是构造函数外的,直接通过点语法添加的,这是供类使用的,实例化对象是访问不到的。3,是类的原型中的,实例化对象可以通过其原型链简介地访问到,也是为供所有实例化对象所共有的。
(2)类式继承
通过子类的原型prototype对象实例化来实现的

继承就是声明2个类,不过类式继承需要将第一个类的实例赋值给第二个类的原型。这段代码,在实现subClass继承superClass时是通过将superClass的实例赋值给subClass的原型prototype,所以subClass.prototype继承了superClass.
缺点就是:一个子类的实例原型从父类构造函数中继承来的共有属性就会直接影响到其他子类。比如:

额外知识点:instanceof是通过对象的prototype链来确定这个对象是否是某个类的实例,而不关心对象与类的自身结构。
(3)构造函数式继承
构造函数式继承是通过在子类的构造函数作用环境中执行一次父类的构造函数来实现的。

SuperClass.call(this,id);是构造函数式继承的精华,call可以更改函数的作用环境。这个对SuperClass调用这个方法就是将子类中的变量子啊父类中执行一遍,由于父类中是给this绑定属性的,因此子类自然也就继承了父类的共有属性。由于这种类型的继承没有涉及原型prototype,所以父类的原型方法自然不会被子类继承,而如果要想被子类继承就必须要放在构造函数中。
(4)组合继承
组合继承就是:类式继承+构造函数继承

浙公网安备 33010602011771号