ES6 Essentials

隨著javascript這門前端語言攻城掠地,覺得有必要深入了解一下這個語言了,為了大家更好的使用這門不是很好的語言,前端的大師們不斷造輪子,隨著es6的發(fā)布,es7的醞釀,這門語言越來越完備了。es6在es5的基礎(chǔ)上,加入了大量的語法糖,現(xiàn)在總結(jié)一下自己在實(shí)際項目中es6的應(yīng)用

對象字面量定義的變化

  • 字面量定義對象
  • 屬性值的簡寫
  • 屬性名為變量
  • 方法簡寫

箭頭函數(shù)

  • 箭頭函數(shù)格式
  • this作用域
  • 箭頭函數(shù)的優(yōu)點(diǎn)及使用場景
對象字面量定義

不管在es5還是es6中,javascript 的書寫規(guī)范中也建議大家使用字面量對象來定義初始化javascript 對象。這個沒有什么不同

var person = {
   name : 'zhangsan',
   age : 20
}
屬性值的簡寫

在es5中定義一個對象,它的屬性值是變量,我們會按以下代碼

var name='bird man'
var age=20
var country=function(){
   return 'i am English'
}

var person={
  name : name,
  age : age,
  country : country
}

在es6中如果屬性名與屬性值的變量名相同,我們可以省略值的書寫,它隱含在es6中,一旦習(xí)慣了語法,你會發(fā)現(xiàn)代碼的可讀性和開發(fā)效率會得到提升,上面的代碼我們可以寫成下面的形式

var name='bird man'
var age=20
var country=function(){
   return 'i am English'
}

var person={
  name,
  age,
  country
}
屬性名是一個變量

有時我們定義一個對象時,基于變量或其他JavaScript表達(dá)式的名稱的屬性,而不是您預(yù)先知道的值。如下面的代碼片段在ES5中。

var expertise = 'journalism'
var person = {
   name : 'zhangsan',
   age : 23
}
person[expertise] = {
  years: 5,
  interests: ['international', 'politics', 'internet']
}

ES6中的對象字面量不限于使用靜態(tài)名稱的聲明。也可以使用動態(tài)屬性名稱,可以將任何表達(dá)式包裝在方括號中,并將其用作屬性名稱。當(dāng)達(dá)到聲明時,將計算得到的表達(dá)式并將其用作屬性名稱。以下示例展示了我們剛才看到的代碼片段如何在一個步驟中聲明person對象,而不必求助于第二個語句,

var expertise = 'journalism'
var person = {
   name : 'zhangsan',
   age : 23,
  [expertise] = {
      years: 5,
     interests: ['international', 'politics', 'internet']
   }
}

與其同時我們上面講過當(dāng)屬性值與變量名相同時,可以將屬性值省略掉,上面的代碼可以簡寫為

var expertise = 'journalism'
var journalism = {
    years: 5,
     interests: ['international', 'politics', 'internet']
}
var person = {
   name : 'zhangsan',
   age : 23,
  [expertise]
}

還有其他情況當(dāng)我們的屬性名是一個對象的屬性,我們可以直接用嗎,是的,我們沒必要通過第三個語句來添加屬性 grocery 到對象 groceries,如示例

var grocery = {
  id: 'bananas',
  name: 'Bananas',
  units: 6,
  price: 10,
  currency: 'USD'
}
var groceries = {
  [grocery.id]: grocery
}

我們寫代碼可能常常遇到這樣的情況,可能是每當(dāng)一個函數(shù)接收到一個參數(shù),然后它應(yīng)該使用它來構(gòu)建一個對象。在ES5代碼中,您需要分配一個聲明對象字面量的變量,然后添加動態(tài)屬性,然后返回對象。

function getEnvelope (type, description) {
  var envelope = {
    data: {}
  }
  envelope[type] = description
  return envelope
}

在es6代碼中我們可以直接這樣寫,簡單明了

function getEnvelope (type, description) {
  return {
    data: {},
    [type]: description
  }
}
方法定義

通常,您可以通過向?qū)ο筇砑訉傩詠砺暶鲗ο笊系姆椒?,如下一個代碼段所示

var emitter ={
     var emit : function(){eventName}
 }

而在es5中就加入了對象的get ,set 方法,它們的寫法與其他的定義普通方法有區(qū)別,如下代碼

var reserves = 4
var spaceship = {
  get fuel () {
    return reserves
  },
  set fuel (value) {
    reserves = value
  }
}

從ES6開始,可以使用類似的語法在對象字面量上聲明常規(guī)方法。唯一的區(qū)別是,你需要省略一個前綴,如get和set。同時提供了一種替代傳統(tǒng)方法聲明的簡潔方法,您不需要使用function關(guān)鍵字。以下示例顯示了使用ES6語法定義spaceship 。

var reserves = 4
var spaceship = {
  get fuel () {
    return reserves
  },
  set fuel (value) {
    reserves = value
  },
  deplete () {
    reserves = 0
  }
}
spaceship.fuel = 10
spaceship.deplete()
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、ES6簡介 ? 歷時將近6年的時間來制定的新 ECMAScript 標(biāo)準(zhǔn) ECMAScript 6(亦稱 ...
    一歲一枯榮_閱讀 6,212評論 8 25
  • 三,字符串?dāng)U展 3.1 Unicode表示法 ES6 做出了改進(jìn),只要將碼點(diǎn)放入大括號,就能正確解讀該字符。有了這...
    eastbaby閱讀 1,674評論 0 8
  • 本文內(nèi)容:1、 什么是鏈表?2、 鏈表共分幾類?3、 鏈表的 C 實(shí)現(xiàn)! 總表:《數(shù)據(jù)結(jié)構(gòu)?》 工程代碼 Gith...
    半紙淵閱讀 40,211評論 0 54
  • 真的什么時候事情都沒有你想的那么簡單!尤其是對于雙魚座這就更要命啦!他們總是充斥著美好的幻想。思想里避免著不去想...
    Yt丶青蝦閱讀 164評論 0 1
  • 我和幾個同事在一間合租的房間里 聽說那天會有類似停水,或是停電之類的通知 我們圍坐在沙發(fā)上干等著停電時間過去 可能...
    花京體驗(yàn)閱讀 205評論 0 1

友情鏈接更多精彩內(nèi)容