关于继承

xiaoxiao2021-02-28  84

继承的几种方式

原型链 /*原型链*/ function SuperType() { this.property=true; } SuperType.prototype.getSuperValue=function () { return this.property; }; function SubType(){ this.subproperty=true; } SubType.prototype=new SuperType(); SubType.prototype.getSubValue=function () { return this.subproperty; }; var instance=new SubType(); console.log(instance);

通过控制台可以看出原型链的方式 2. 借用构造函数继承

/*借用构造函数继承*/ function SuperType() { this.color=["blue","red"]; } function SubType() { SuperType.call(this);//继承了color属性 } var instance1=new SubType(); instance1.color.push("black"); console.log(instance1);

3.组合方式继承

/*组合方式继承*/ function SuperType(name){ this.name=name; this.colors=["blue","white"]; } SuperType.prototype.sayName=function () { console.log(this.name); }; function SubType(age,name){ SuperType.call(this,name);//通过构造函数方式继承 this.age=age; } SubType.prototype=new SuperType();//通过原型的方式继承 Subtype.prototype.constructor=SubType; Subtype.prototype.sayAge=function () { console.log(this.age); }; var instance1=new SubType("hello",29); console.log(instance1);

4.原型式继承 object.create()的profill方式

function Object(o) { function F() {} F.prototype=o; return new F(); }

5.寄生组合式继承

/*寄生组合式继承*/ function inHeritPrototype(SuperType,SubType) { var prototype=Object(SuperType.prototype);//创建对象 prototype.constructor=SubType;//增强对象 SubType.prototype=prototype; } function SuperType(name){ this.name=name; this.colors=["blue","white"]; } SuperType.prototype.sayName=function () { console.log(this.name); }; function SubType(age,name) { SuperType.call(this, name); this.age=age; } inHeritPrototype(SuperType,SubType); SubType.prototype.sayAge=function () { return this.age; }; var instance1=new SubType("hello",28); console.log(instance1);

转载请注明原文地址: https://www.6miu.com/read-82713.html

最新回复(0)