當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
JavaScript中的三种常用继承方法
生活随笔
收集整理的這篇文章主要介紹了
JavaScript中的三种常用继承方法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目錄
1.原型鏈繼承
2.借用構造函數繼承(繼承屬性)
3.組合繼承
4.使用call或apply向父函數中傳參
?
1.原型鏈繼承
固定格式:
子函數.prototype=new 父函數();原理:通過改變一個函數的原型指向來完成的繼承
優點:暫無(2021.2.18)
缺點:
示例代碼:
//Humans是父函數,Mans是子函數function Humans(){this.foot=2; }Humans.prototype.getFoot=function(){alert(this.foot); }function Mans(){this.head=3; }Mans.prototype=new Humans(); //Mans繼承HumansMans.prototype.getHead=function(){ //注意向子類原型中添加屬性或方法要寫在繼承語句之后 alert(this.head); }var man1=new Mans(); man1.getFoot(); man1.getHead();?
2.借用構造函數繼承(繼承屬性)
在子函數內部使用apply或者call完成構造函數繼承
固定格式:
//語法卸載子函數函數體內//使用apply 父函數.apply(this);//使用call 父函數.call(this);原理:此繼承相當于把父函數函數體內的屬性或方法拷貝了一份副本給子函數的實例使用
優點:子函數實例不共用同一個父函數的屬性或方法,修改一處不會導致全局被修改,可以向父函數傳參(2021.2.18)
缺點:只能繼承父函數函數體內的屬性或方法,無法繼承原型中的任何東西
示例代碼:
//Humans是父函數,Mans是子函數function Humans(){this.foot=2; }Humans.prototype.getFoot=function(){alert(this.foot); }function Mans(){this.head=3;Humans.call(this); }Mans.prototype.getHead=function(){ //注意向子類原型中添加屬性或方法要寫在繼承語句之后 alert(this.head); }var man1=new Mans();alert(man1.foot); alert(man1.head);?
3.組合繼承
使用原型鏈繼承和借用構造函數繼承實現組合繼承
固定格式:
//語法寫在子函數函數體內//使用apply 父函數.apply(this);//使用call 父函數.call(this);//原型鏈繼承 子函數.prototype=new 父函數();原理:借用構造函數繼承父函數函數體內的東西,原型鏈繼承父函數原型中的東西(彌補了結構構造函數的缺點)
優點:子函數實例不共用同一個父函數的屬性或方法,修改一處不會導致全局被修改,可以向父函數傳參,同時子函數又繼承父函數的原型(2021.2.18)
缺點:暫無
示例代碼:
//Humans是父函數,Mans是子函數function Humans(){this.foot=2; }Humans.prototype.getFoot=function(){alert(this.foot); }function Mans(){this.head=3;Humans.call(this); //繼承屬性 }Mans.prototype=new Humans(); //繼承原型Mans.prototype.getHead=function(){ //注意向子類原型中添加屬性或方法要寫在繼承語句之后 alert(this.head); }var man1=new Mans();alert(man1.foot); alert(man1.head); man1.getFoot();?
4.使用call向父函數中傳參
固定格式:
//參數傳遞的順序和父函數()中參數的順序一致 父函數.call(this,參數1,參數2....)示例代碼:
//Humans是父函數,Mans是子函數function Humans(foot){ //注意,此時()里的foot和函數體內的foot不是一個footthis.foot=foot; //this.foot=參數foot }Humans.prototype.getFoot=function(){alert(this.foot); }function Mans(){this.head=3;Humans.call(this,2); //繼承屬性 }Mans.prototype=new Humans(); //繼承原型Mans.prototype.getHead=function(){ //注意向子類原型中添加屬性或方法要寫在繼承語句之后 alert(this.head); }var man1=new Mans();alert(man1.foot); alert(man1.head); man1.getFoot();聲明:所有內容均為個人理解總結,如理解有誤請及時糾正我的錯誤,以免誤人子弟,謝謝!!!
總結
以上是生活随笔為你收集整理的JavaScript中的三种常用继承方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 我的世界钟表(我的世界钟)
- 下一篇: Spring快速入门及深入