您好,欢迎访问一九零五行业门户网

JS中的继承方式有哪些?

1. 原型链继承
child.prototype = new parent();
 1 function parent (name, age) { 2     this.name = name; 3     this.age = age; 4 } 5 parent.prototype.say = function(){ 6     console.log('hello, my name is ' + this.name); 7 }; 8 function child() { 9 }10 child.prototype = new parent('pursue');11 var child1 = new child();12 child1.say(); //hello, my name is pursue13 var child2 = new child();14 console.log(child1.say === child2.say);//true15 console.log(child1.name === child2.name);//true
2. call(thisobj, param1, param2,...)
 1 function parent(username){ 2     this.username = username; 3     this.hello = function(){ 4       alert(this.username); 5     } 6   } 7   function child(username,password){ 8     parent.call(this,username); 9     this.password = password;10     this.world = function(){11       alert(this.password);12     }13   }14   var parent = new parent(zhangsan);15   var child = new child(lisi,123456);16   parent.hello();17   child.hello();18   child.world();
3. apply(thisobj, [param1,param2,...])
 1 function parent(username){ 2     this.username = username; 3     this.hello = function(){ 4       alert(this.username); 5     } 6   } 7   function child(username,password){ 8     parent.apply(this,new array(username)); 9     this.password = password;10     this.world = function(){11       alert(this.password);12     }13   }14   var parent = new parent(zhangsan);15   var child = new child(lisi,123456);16   parent.hello();17   child.hello();18   child.world();
4. 组合继承(call+原型链 / apply+原型链)
 1 function parent(hello){ 2     this.hello = hello; 3   } 4   parent.prototype.sayhello = function(){ 5     alert(this.hello); 6   } 7   function child(hello,world){ 8     parent.call(this,hello);//利用 call 方法 将父类的属性继承过来 9     //parent.apply(this,new array(hello));//利用 apply 方法 将父类的属性继承过来10     this.world = world;//新增一些属性11   }12   child.prototype = new parent();//将父类的方法继承过来13   child.prototype.sayworld = function(){//新增一些方法14     alert(this.world);15   }16   var c = new child(zhangsan,lisi);17   c.sayhello();18   c.sayworld();
5.寄生组合继承,与4相似,只是将原型链换做了object.create(parent.prototype)
 1 function parent(hello){ 2     this.hello = hello; 3   } 4   parent.prototype.sayhello = function(){ 5     alert(this.hello); 6   } 7   function child(hello,world){ 8     parent.call(this,hello);//利用 call 方法 将父类的属性继承过来 9     //parent.apply(this,new array(hello));//利用 apply 方法 将父类的属性继承过来10     this.world = world;//新增一些属性11   }12   child.prototype = object.create(parent.prototype);//将父类的方法继承过来13   child.prototype.sayworld = function(){//新增一些方法14     alert(this.world);15   }16   var c = new child(zhangsan,lisi);17   c.sayhello();18   c.sayworld();
以上就是js中的继承方式有哪些?的详细内容。
其它类似信息

推荐信息