ES6為一些已有的功能提供了非破壞性更新,這類更新中的大部分我們可以理解為語法糖,稱之為語法糖,意味著,這類新語法能做的事情其實(shí)用ES5也可以做,只是會(huì)稍微復(fù)雜一些。本章我們將著重討論這些語法糖,看完之后,可能你會(huì)對(duì)一些你很熟悉的ES6新語法有不一樣的理解。
JavaScript ES6對(duì)象字面量
對(duì)象字面量是指以{}形式直接表示的對(duì)象,比如下面這樣:
var book = { title: 'Modular ES6', author: 'Nicolas', publisher: 'O´Reilly'}ES6 為對(duì)象字面量的語法帶來了一些改進(jìn):包括屬性/方法的簡潔表示,可計(jì)算的屬性名等等,我們逐一來看:
JavaScript ES6中屬性的簡潔表示法
你有沒有遇到過這種場景,一個(gè)我們聲明的對(duì)象中包含若干屬性,其屬性值由變量表示,且變量名和屬性名一樣的。比如下面這樣,我們想把一個(gè)名為 listeners 的數(shù)組賦值給events對(duì)象中的listeners屬性,用ES5我們會(huì)這樣做:
var listeners = []function listen() {}var events = { listeners: listeners, listen: listen}ES6則允許我們簡寫成下面這種形式:
var listeners = []function listen() {}var events = { listeners, listen }怎么樣,是不是感覺簡潔了許多,使用對(duì)象字面量的簡潔寫法讓我們?cè)诓挥绊懻Z義的情況下減少了重復(fù)代碼。
這是ES6帶來的好處之一,它提供了眾多更簡潔,語義更清晰的語法,讓我們的代碼的可讀性,可維護(hù)性大大提升。
可計(jì)算的屬性名
對(duì)象字面量的另一個(gè)重要更新是允許你使用可計(jì)算的屬性名,在ES5中我們也可以給對(duì)象添加屬性名為變量的屬性,一般說來,我們要按下面方法這樣做,首先聲明一個(gè)名為expertise的變量,然后通過person[expertise]這種形式把變量添加為對(duì)象person的屬性:
var expertise = 'journalism'var person = { name: 'Sharon', age: 27}person[expertise] = { years: 5, interests: ['international', 'politics', 'internet']}ES6 中,對(duì)象字面量可以使用計(jì)算屬性名了,把任何表達(dá)式放在中括號(hào)中,表達(dá)式的運(yùn)算結(jié)果將會(huì)是對(duì)應(yīng)的屬性名,上面的代碼,用ES6可以這樣寫:
var expertise = 'journalism'var person = { name: 'Sharon', age: 27, [expertise]: { years: 5, interests: ['international', 'politics', 'internet'] }}不過需要注意的是,簡寫屬性和計(jì)算的屬性名不可同時(shí)使用。這是因?yàn)?,簡寫屬性是一種在編譯階段的就會(huì)生效的語法糖,而計(jì)算的屬性名則在運(yùn)行時(shí)才生效。如果你把二者混用,代碼會(huì)報(bào)錯(cuò)。而且二者混用往往還會(huì)降低代碼的可讀性,所以JavaScript在語言層面上限制二者不能混用也是個(gè)好事。
新聞熱點(diǎn)
疑難解答
圖片精選