基于组合的方式完成继承
通过组合方式创建对象,属性在构造函数中,方法在原型里
通过伪造call方法继承属性,原型链继承方法
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> </head> <body> <script> //属性在构造函数里 function Parent(name,age){ this.name=name; this.age=age; this.color=["red","blue"]; } //方法在原型里 Parent.prototype={ constructor:true, say:function(){alert(this.name+","+this.age+","+this.color)} }; //创建子函数属性,通过call继承Parent属性 function Child(friends,name,age){ Parent.call(this,name,age); this.friends=friends; } //重写Child原型,将原型指向Parent原型,通过原型链继承属性和方法 Child.prototype=new Parent(); Child.prototype.show=function(){ alert(this.friends); this.say(); }; //C1与C2互不影响,都是各自开开辟空间,并指向Child的原型。 var C1=new Child("friends","name",22); var C2=new Child("Issac","Reid",18); C2.color.push("yellow"); C2.say(); C1.say(); </script> </body> </html>