寄生组合继承
<script> //1.原型继承 2.对象冒充 3.组合继承(常用) 4.原型式继承 //5.寄生式继承 6.寄生组合继承 function Person(age) {//共同的属性放在构造函数 this.age=age; this.family=["爸爸","妈妈"]; } Person.prototype.fun= function () {//共同的方法用原型 return this.age+this.family; }; function Student(age) {//解决引用类型改变值其他的也改变 Person.call(this,age);//第二次调用Person函数 } // Student.prototype=new Person();//第一次调用Person函数 //解决两次调用的问题 采用寄生 function getObj(o) { function F() {} F.prototype=o; return new F(); } function createObj(Person,Student) {//寄生函数 解决了两次调用的问题 var obj=getObj(Person.prototype); Student.prototype=obj; obj.constructor=Student; } createObj(Person,Student);// Student.prototype=new Person();//第一次调用Person函数 var s1=new Student(22); var s2=new Student(22); console.log(s2.fun()) console.log(s2.constructor) </script>
发表评论: