jQuery中的继承的几种方法

    科技2022-07-20  103

    1:什么是继承,继承的概念: 继承是指一个对象直接使用另一对象的属性和方法,继承可以使得子类具有父类的各种属性和方法。 2:继承的称呼: 父类 == 超类型 == 基类 子类 == 派生类 3:继承的方法: 1:原型链继承 原型链继承的缺点: 1:创建子类实例时不能向超类传参 2:引用类型不能保持独立

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> </body> <script type="text/javascript"> // function a(){ // this.name='tom'; // this.age=12; // this.fun=function(){ // alert(this.name+this.age) // } // } // function b(){ // // } // b.prototype=new a(); // var c=new b(); // alert(c.name) // alert(c.age) // c.fun(); function Aa(){ this.name='tom'; this.age=12; this.arr=['华为','苹果','小米']; } function Bb(){ this.fun=function(){ alert(this.name+this.age); } } Bb.prototype=new Aa(); var b1=new Bb(); var b2=new Bb(); // b1.fun(); // b2.fun(); alert(b1.arr) alert(b2.arr) b1.arr.push('哈哈'); alert(b1.arr) alert(b2.arr) </script> </html> 2:构造继承 借用构造函数的继承解决了: 1:引用保持独立 2:可以传参 借用构造函数的继承(又叫:冒充继承) 方法:call() 构造继承缺点: 对象冒充只能继承构造实例中的属性和方法,不能继承原型中的属性和方法! <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> </body> <script type="text/javascript"> function a(name,age){ this.name=name; this.age=age; this.arr=['大哥','大姐','小姐姐']; } a.prototype.fun=function(){ alert(this.name+this.age) } function b(name,age){ a.call(this,name,age) } var b1=new b('jcak','12'); var b3=new b('tom','122'); var b2=new a(); alert(b1.name) alert(b2.name) alert(b3.name) alert(b2.arr); alert(b1.arr); b1.arr.push('小哥哥'); alert(b2.arr); alert(b1.arr); b1.fun() // var o={ // x:4 // } // var x=12; // function a(){ // alert(this.x)//12 4 // } window.a(); // a.call(o)//o对象通过call方法冒充a来执行a里面的输出方法 </script> </html> 3:原型+构造继承(组合继承) 组合继承就是 原型继承+构造继承 原型链继承 只继承原型里面的内容 构造函数(冒充继承)只继承构造函数里面的内容 组合继承解决了 想共享的共享 不想共享的不共享问题 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> </body> <script type="text/javascript"> function a(name,age){ this.name=name; this.age=age; this.arr=['哈哈','呵呵'] } function b(name,age){ a.call(this,name,age) } a.prototype.fun=function(){ alert(this.name+this.age) } b.prototype=new a(); var c1=new b('tom','12') var c2=new b('jack','122') alert(c1.name) alert(c2.name) c1.fun(); c2.fun(); alert(c1.arr) alert(c2.arr) c1.arr.push('嘿嘿') alert(c1.arr) alert(c2.arr) </script> </html>
    Processed: 0.009, SQL: 8