成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

ES6學(xué)習(xí)總結(jié)(三)

baoxl / 1430人閱讀

摘要:不同于其他面向?qū)ο笳Z言,以前的中中沒有類的概念,主要是通過原型的方式來實(shí)現(xiàn)繼承,中引入了原型鏈,并且將原型鏈用來實(shí)現(xiàn)繼承,其核心是利用原型使得一個對象繼承另一個對象的方法和屬性,中原型繼承的關(guān)鍵是將一個實(shí)例的原型對象指向另一個實(shí)例,因此前一

不同于其他面向?qū)ο笳Z言,ES6以前的JavaScript中中沒有class類的概念,主要是通過原型的方式來實(shí)現(xiàn)繼承,JavaScript中引入了原型鏈,并且將原型鏈用來實(shí)現(xiàn)繼承,其核心是利用原型使得一個對象繼承另一個對象的方法和屬性,JavaScript中原型繼承的關(guān)鍵是將一個實(shí)例的原型對象指向另一個實(shí)例,因此前一個實(shí)例便可以獲得后一個實(shí)例原型對象的屬性和方法,例如:

function Father(){
  this.age=30;
}
Father.prototype.work=function(){
  return "hard work";
}
function Child(){
  this.age=10;
}
//將child的原型指向Father構(gòu)造函數(shù)的實(shí)例
Child.prototype=new Father();

Child.prototype.play=function(){
  return "play";                
}

var child=new Child();

console.log(child.play()) // play
console.log(child.work()) // work

看完了上面的JavaScript典型的原型繼承,要回到ES6上面了,ES6中引入了類class 的概念,實(shí)際上是語法糖,很多都與構(gòu)造函數(shù)相關(guān),先看個例子:

// var Man =class{ 這么寫也是可以的
class Man{
  constructor(age) {
    this.age=age;
  }
  grow(){
    return this.age+1;
  }
}
var cala=new Man(22);
console.log(cala.grow()); // 23 

上面是一個簡單的ES6寫class的例子,可以看到的是,用class關(guān)鍵字定義類,里面的constructor指的是構(gòu)造函數(shù),在構(gòu)造函數(shù)中定義私有屬性,然后接著定義了一個grow方法,最后通過new關(guān)鍵字來實(shí)例化一個對象

在JavaScript中定義類和定義函數(shù)很相似,不過兩者還是有些不同,函數(shù)聲明可以提升,但是類聲明則不行

var cala=new Man();
class Man{} // Man is not defined

ES6中的類使用 extends創(chuàng)建子類,每個類里面都會有一個constructor構(gòu)造函數(shù),實(shí)例化的時候必須用new關(guān)鍵字來調(diào)用類的構(gòu)造函數(shù),一個構(gòu)造函數(shù)可以通過super來調(diào)用另一個構(gòu)造函數(shù)

class Man{
  constructor(age) {
    this.age=age;
  }
  static work(){
    return "hard work"
  }
}

class Cala extends Man{
  constructor(age){
    super(age);
  }
  grow(){
    return this.age+1;
  }
}

var cala=new Cala(22);
console.log(cala.grow()) // 23

ES6中的class支持類支持在原型上定義訪問器get,set屬性

class Man{
  constructor(age) {
    this.age=age;
  }
  get getAge(){
    return this.age;
  }
  set setAge(age){
    this.age=age;
  }
}
var cala=new Man(22);
console.log(cala.getAge) // 22

cala.setAge=33;
console.log(cala.getAge) // 33

ES6的class中支持靜態(tài)方法,用關(guān)鍵字static來定義,熟悉面向類與對象的童鞋大多知道,靜態(tài)方法屬于類本身,是通過類來調(diào)用,不能通過實(shí)例來調(diào)用

class Man{
  constructor(age) {
    this.age=age;
  }
  static work(){
    return "hard work"
  }
}

console.log(Man.work()); // hard work

var cala=new Man(22);
console.log(cala.work()); // cala.work is not a function 

結(jié)合上面JavaScript典型的原型繼承和下面的ES6的類,可以看出在使用new關(guān)鍵字實(shí)例化對象的時候,實(shí)際上是調(diào)用了prototype上的構(gòu)造函數(shù),ES6的class本質(zhì)就是語法糖,對于傳統(tǒng)的寫法來說,也是可以在ES6中適用的,類上的方法其實(shí)也就相當(dāng)于定義在prototype上面

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/87281.html

相關(guān)文章

  • ES6零基礎(chǔ)教學(xué)_解析彩票項(xiàng)目-學(xué)習(xí)筆記(一)

    摘要:彩票項(xiàng)目實(shí)戰(zhàn)學(xué)習(xí)記錄一完整走了一遍課程,覺得還不錯。支持正版人人有責(zé)零基礎(chǔ)教學(xué)解析彩票項(xiàng)目下面是項(xiàng)目課程的目錄路線一個項(xiàng)目分為三部分業(yè)務(wù)邏輯,自動構(gòu)建系統(tǒng),模擬數(shù)據(jù)和真實(shí)數(shù)據(jù)接口處理。 彩票項(xiàng)目實(shí)戰(zhàn)學(xué)習(xí)記錄(一) 完整走了一遍課程,覺得還不錯。 總結(jié): es6的知識點(diǎn)說得還算清楚,主要是為了了解和使用,不是深究,所以淺嘗即止即可,所以覺得還不錯。 完整還原了項(xiàng)目開發(fā)的代碼設(shè)計和開發(fā)過...

    blastz 評論0 收藏0
  • 前端資源系列(4)-前端學(xué)習(xí)資源分享&前端面試資源匯總

    摘要:特意對前端學(xué)習(xí)資源做一個匯總,方便自己學(xué)習(xí)查閱參考,和好友們共同進(jìn)步。 特意對前端學(xué)習(xí)資源做一個匯總,方便自己學(xué)習(xí)查閱參考,和好友們共同進(jìn)步。 本以為自己收藏的站點(diǎn)多,可以很快搞定,沒想到一入?yún)R總深似海。還有很多不足&遺漏的地方,歡迎補(bǔ)充。有錯誤的地方,還請斧正... 托管: welcome to git,歡迎交流,感謝star 有好友反應(yīng)和斧正,會及時更新,平時業(yè)務(wù)工作時也會不定期更...

    princekin 評論0 收藏0
  • 教你如何打好根基快速入手react,vue,node

    摘要:謹(jǐn)記,請勿犯這樣的錯誤。由于在之前的教程中,積累了堅實(shí)的基礎(chǔ)。其實(shí),這是有緣由的其復(fù)雜度在早期的學(xué)習(xí)過程中,將會帶來災(zāi)難性的影響。該如何應(yīng)對對于來說,雖然有大量的學(xué)習(xí)計劃需要采取,且有大量的東西需要學(xué)習(xí)。 前言倘若你正在建造一間房子,那么為了能快點(diǎn)完成,你是否會跳過建造過程中的部分步驟?如在具體建設(shè)前先鋪設(shè)好部分石頭?或直接在一塊裸露的土地上先建立起墻面? 又假如你是在堆砌一個結(jié)婚蛋糕...

    ddongjian0000 評論0 收藏0
  • 教你如何打好根基快速入手react,vue,node

    摘要:謹(jǐn)記,請勿犯這樣的錯誤。由于在之前的教程中,積累了堅實(shí)的基礎(chǔ)。其實(shí),這是有緣由的其復(fù)雜度在早期的學(xué)習(xí)過程中,將會帶來災(zāi)難性的影響。該如何應(yīng)對對于來說,雖然有大量的學(xué)習(xí)計劃需要采取,且有大量的東西需要學(xué)習(xí)。 前言倘若你正在建造一間房子,那么為了能快點(diǎn)完成,你是否會跳過建造過程中的部分步驟?如在具體建設(shè)前先鋪設(shè)好部分石頭?或直接在一塊裸露的土地上先建立起墻面? 又假如你是在堆砌一個結(jié)婚蛋糕...

    LiangJ 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<