最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript中的繼承之類繼承

 更新時(shí)間:2016年05月01日 10:07:53   作者:prince.shi  
在JS中繼承是一個(gè)非常復(fù)雜的話題,比其他任何面向?qū)ο笳Z言中的繼承都復(fù)雜得多。接下來通過本文給大家介紹JavaScript中的繼承之類繼承,感興趣的朋友一起看看吧

繼承簡介

      在JS中繼承是一個(gè)非常復(fù)雜的話題,比其他任何面向?qū)ο笳Z言中的繼承都復(fù)雜得多。在大多數(shù)其他面向?qū)ο笳Z言中,繼承一個(gè)類只需使用一個(gè)關(guān)鍵字即可。在JS中想要達(dá)到繼承公用成員的目的,需要采取一系列措施。JS屬于原型式繼承,得益于這種靈活性,我們既可以使用標(biāo)準(zhǔn)的基于類的繼承,也可以使用更微妙一些的原型式繼承。在JS中應(yīng)該要明確一點(diǎn),一切繼承都是通過prototype來進(jìn)行的,且JS是基于對象來繼承的。

繼承:

function Animal(name){ 
this.name = name; 
this.showName = function(){ 
alert(this.name); 
} 
} 
function Cat(name){ 
Animal.call(this, name); 
} 
var cat = new Cat("Black Cat"); 
cat.showName();

Animal.call(this) 的意思就是使用 Animal對象代替this對象,那么 Cat中不就有Animal的所有屬性和方法了嗎,Cat對象就能夠直接調(diào)用Animal的方法以及屬性了.

多繼承:

function Class10() 
{ 
this.showSub = function(a,b) 
{ 
alert(a-b); 
} 
} 
function Class11() 
{ 
this.showAdd = function(a,b) 
{ 
alert(a+b); 
} 
} 
function Class2() 
{ 
Class10.call(this); 
Class11.call(this); 
}

很簡單,使用兩個(gè) call 就實(shí)現(xiàn)多重繼承了

當(dāng)然,js的繼承還有其他方法,例如使用原型鏈,這個(gè)不屬于本文的范疇,只是在此說明call 的用法。說了call ,當(dāng)然還有 apply,這兩個(gè)方法基本上是一個(gè)意思,區(qū)別在于 call 的第二個(gè)參數(shù)可以是任意類型,而apply的第二個(gè)參數(shù)必須是數(shù)組,也可以是arguments。

下面給大家介紹如何在JavaScript中實(shí)現(xiàn)簡單的繼承?

下面的例子將創(chuàng)建一個(gè)雇員類Employee,它從Person繼承了原型prototype中的所有屬性。

function Employee(name, sex, employeeID) {
this.name = name;
this.sex = sex;
this.employeeID = employeeID;
}
// 將Employee的原型指向Person的一個(gè)實(shí)例
// 因?yàn)镻erson的實(shí)例可以調(diào)用Person原型中的方法, 所以Employee的實(shí)例也可以調(diào)用Person原型中的所有屬性。
Employee.prototype = new Person();
Employee.prototype.getEmployeeID = function() {
return this.employeeID;
};
var zhang = new Employee("ZhangSan", "man", "");
console.log(zhang.getName()); // "ZhangSan

上面關(guān)于繼承的實(shí)現(xiàn)很粗糙,并且存在很多問題:

在創(chuàng)建Employee構(gòu)造函數(shù)和原型(以后簡稱類)時(shí),就對Person進(jìn)行了實(shí)例化,這是不合適的。

Employee的構(gòu)造函數(shù)沒法調(diào)用父類Person的構(gòu)造函數(shù),導(dǎo)致在Employee構(gòu)造函數(shù)中對name和sex屬性的重復(fù)賦值。

Employee中的函數(shù)會(huì)覆蓋Person中的同名函數(shù),沒有重載的機(jī)制(和上一條是一個(gè)類型的問題)。

創(chuàng)建JavaScript類的語法過于零散,不如C#/Java中的語法優(yōu)雅。

實(shí)現(xiàn)中有constructor屬性的指向錯(cuò)誤。

相關(guān)文章

  • JS設(shè)計(jì)模式之策略模式概念與用法分析

    JS設(shè)計(jì)模式之策略模式概念與用法分析

    這篇文章主要介紹了JS設(shè)計(jì)模式之策略模式概念與用法,簡單分析了策略模式的基本概念、原理并結(jié)合實(shí)例形式分析了javascript實(shí)現(xiàn)與使用策略模式的相關(guān)操作技巧,需要的朋友可以參考下
    2018-02-02
  • 分享5個(gè)JavaScript的寫法小技巧

    分享5個(gè)JavaScript的寫法小技巧

    寫代碼的時(shí)候總有一些東西是會(huì)重復(fù)出現(xiàn)的,次數(shù)多了你就會(huì)想找找捷徑了,下面這篇文章主要給大家介紹了關(guān)于5個(gè)JavaScript的寫法小技巧,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-02-02
  • WordPress 單頁面上一頁下一頁的實(shí)現(xiàn)方法【附代碼】

    WordPress 單頁面上一頁下一頁的實(shí)現(xiàn)方法【附代碼】

    下面小編就為大家?guī)硪黄猈ordPress 單頁面上一頁下一頁的實(shí)現(xiàn)方法【附代碼】。小編覺得非常不錯(cuò)。給大家分享一下。希望能給大家一個(gè)參考。
    2016-03-03
  • 深入理解js A*尋路算法原理與具體實(shí)現(xiàn)過程

    深入理解js A*尋路算法原理與具體實(shí)現(xiàn)過程

    這篇文章主要介紹了js A*尋路算法原理與具體實(shí)現(xiàn)過程,結(jié)合實(shí)例形式詳細(xì)分析了A*尋路算法的具體概念、原理、實(shí)現(xiàn)方法與相關(guān)操作技巧,需要的朋友可以參考下
    2018-12-12
  • javascript div 彈出可拖動(dòng)窗口

    javascript div 彈出可拖動(dòng)窗口

    創(chuàng)建彈出div窗口。
    2009-02-02
  • JavaScript異步編程中async函數(shù)詳解

    JavaScript異步編程中async函數(shù)詳解

    async函數(shù)是使用async關(guān)鍵字聲明的函數(shù)。 async函數(shù)是AsyncFunction構(gòu)造函數(shù)的實(shí)例, 并且其中允許使用await關(guān)鍵字。async和await關(guān)鍵字讓我們可以用一種更簡潔的方式寫出基于Promise的異步行為,而無需刻意地鏈?zhǔn)秸{(diào)用promise
    2022-11-11
  • js判斷文本框剩余可輸入字?jǐn)?shù)的方法

    js判斷文本框剩余可輸入字?jǐn)?shù)的方法

    這篇文章主要介紹了js判斷文本框剩余可輸入字?jǐn)?shù)的方法,可實(shí)現(xiàn)直觀顯示文本框可輸入字?jǐn)?shù)的功能,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-02-02
  • 弱類型語言javascript開發(fā)中的一些坑實(shí)例小結(jié)【變量、函數(shù)、數(shù)組、對象、作用域等】

    弱類型語言javascript開發(fā)中的一些坑實(shí)例小結(jié)【變量、函數(shù)、數(shù)組、對象、作用域等】

    這篇文章主要介紹了弱類型語言javascript開發(fā)中的一些坑,結(jié)合實(shí)例形式總結(jié)分析了javascript開發(fā)中關(guān)于變量、函數(shù)、數(shù)組、對象、作用域等相關(guān)知識(shí)點(diǎn)常見易錯(cuò)問題,需要的朋友可以參考下
    2019-08-08
  • 新手如何快速理解js異步編程

    新手如何快速理解js異步編程

    這篇文章主要介紹了新手如何快速理解js異步編程,異步編程從早期的 callback、事件發(fā)布\訂閱模式到 ES6 的 Promise、Generator 在到 ES2017 中 async,看似風(fēng)格迥異,但是還是有一條暗線將它們串聯(lián)在一起的,,需要的朋友可以參考下
    2019-06-06
  • 如何利用js在兩個(gè)html窗口間通信

    如何利用js在兩個(gè)html窗口間通信

    這篇文章主要介紹了如何利用js在兩個(gè)html窗口間通信,如果讀者們有類似的需求,可以參考下
    2021-04-04

最新評論

仙桃市| 普定县| 沐川县| 梧州市| 隆尧县| 上虞市| 仙桃市| 上饶市| 汕尾市| 九龙坡区| 土默特左旗| 岢岚县| 南涧| 南投县| 张北县| 承德市| 都兰县| 西乡县| 德昌县| 宁都县| 连云港市| 白山市| 莎车县| 泰和县| 当涂县| 樟树市| 南涧| 民权县| 措勤县| 青神县| 钟祥市| 西乡县| 武川县| 新余市| 资中县| 隆德县| 阳西县| 丰宁| 嵩明县| 安国市| 新沂市|