构造
函数、原型和继承的缺陷
首先,我们分析了构造函数和原型链的两个缺点来实现继承
模式。
构造函数(对象伪装)的主要问题是,我们必须使用构造函数模式,继承原型定义的方式,这不是最佳选择。但是,如果使用原型链,就不能使用
参数构造函数。
开发者如何选择答案很简单,它们都被使用了。
构造函数+原型混合法
这种继承使用构造函数定义类,不使用任何原型。
创建一个类是定义
属性构造函数和原型定义
方法的最好方式。这种方法也适用于继承机制,使用对象继承构造函数的属性和继承原型对象的原型链。重写前面的例子在这两方面:代码如下:
复制代码代码如下所示:
函数的ClassA(scolor){
this.color = scolor;
}
(classa.prototype.saycolor =
功能){
警戒(这个颜色);
};
函数B(scolor,SNAME){
ClassA.call(,scolor);
this.name =国;
}
classb.prototype =新ClassA();
(classb.prototype.sayname =功能){
警报(这个
名字);
};
在这个例子中,继承机制是由蓝色的代码实现,突出了两行。在代码,在第一行突出
显示,在B的构造函数,对象是冒充的继承、类的scolor属性。在代码,在第二行高亮显示,A班的通过原型链继承。因为这种混合的方法是使用一个原型链,instanceof
运算符还可以
正确运行。
下面的示例测试代码:
复制代码代码如下所示:
无功obja =新课堂(蓝色);
无功objb =新的B(红
ObjA.sayColor(蓝色); / /输出
objb.saycolor(红色); / /输出
ObjB.sayName(约翰); / /输出