es6

解構(gòu)

解構(gòu)賦值的規(guī)則是,只要等號(hào)右邊的值不是對(duì)象,就先將其轉(zhuǎn)為對(duì)象茴厉。由于undefined和null無(wú)法轉(zhuǎn)為對(duì)象,所以對(duì)它們進(jìn)行解構(gòu)賦值什荣,都會(huì)報(bào)錯(cuò)矾缓。

解構(gòu)函數(shù)的用途

1 交換變量值

[x,y] = [y,x]

2 從函數(shù)返回多個(gè)值

var {foo,bar} = example( );

3 函數(shù)參數(shù)的定義
4 提取Json數(shù)據(jù)

var jsonData = { id: 42, status: "OK", data: [867, 5309]};
let { id, status, data: number } = jsonData;
console.log(id, status, number);// 42, "OK", [867, 5309]

5 函數(shù)參數(shù)的默認(rèn)值
6 遍歷map結(jié)構(gòu)

var map = new Map( );
map.set('first','hello');
map.set('second','hello');
map.set('third','hello');
map.set('fourth','hello');
for(let[key,value] of map){
     //獲取到鍵值對(duì)
}
for(let [key] of map){
    //獲得鍵名
}
for(let [,value] of map){
    //獲得鍵值
}

7 輸入模塊的指定方法

const { SourceMapConsumer, SourceNode } = require("source-map");

正則擴(kuò)展

at相當(dāng)于charAt() ,可以識(shí)別中文
normarize()
includes() , startsWith() , endsWith()
repeat(n) //n為重復(fù)次數(shù)
padStart, padEnd 字符串補(bǔ)全

數(shù)值擴(kuò)展

屏幕快照 2016-10-05 08.02.35.png

二進(jìn)制 0b, 八進(jìn)制0o
Number.isInteger(25.0) // true
Number.EPSILON

function withinErrorMargin (left, right) { 
  return Math.abs(left - right) < Number.EPSILON;
}
withinErrorMargin(0.1 + 0.2, 0.3)
// true
withinErrorMargin(0.2 + 0.2, 0.3)
// false

Math.trunc(4.1) //去除小數(shù)部分
Math.sign() //判斷正負(fù)數(shù)/0
Math.cbrt() //立方根
Math.fround() //返回?cái)?shù)值的單精度浮點(diǎn)數(shù)形式
...
還有一些關(guān)于對(duì)數(shù)方法稻爬,三角函數(shù)方法
指數(shù)運(yùn)算符: a**=2; // a= a * a;

數(shù)組擴(kuò)展

屏幕快照 2016-10-05 08.26.50.png

1 對(duì)象轉(zhuǎn)數(shù)組

//es5 對(duì)象轉(zhuǎn)數(shù)組: 
 var arr1 = [].slice.call(arrayLike);
//es6 對(duì)象轉(zhuǎn)數(shù)組,適用于數(shù)組對(duì)象和可遍歷對(duì)象Map嗜闻,Set
 let arr2 = Array.from(arrayLike);

2 Array.of(值1,值2,值3) 將一組值轉(zhuǎn)換為數(shù)組
等價(jià)于es5
var arr1 = [].slice.call(arguments);
3 copyWithin(target,start,end)
target(必需):從該位置開(kāi)始替換數(shù)據(jù)。
start(可選):從該位置開(kāi)始讀取數(shù)據(jù)桅锄,默認(rèn)為0琉雳。如果為負(fù)值样眠,表示倒數(shù)。
end(可選):到該位置前停止讀取數(shù)據(jù)翠肘,默認(rèn)等于數(shù)組長(zhǎng)度檐束。如果為負(fù)值,表示倒數(shù)束倍。

[1, 2, 3, 4, 5].copyWithin(0, 3) // [4, 5, 3, 4, 5]

4 find(回調(diào)函數(shù))

//返回符合條件的值
[1, 4, -5, 10].find((n) => n < 0) // -5

findIndex

//返回符合條件的第一個(gè)索引
[1, 5, 10, 15].findIndex(function(value, index, arr) { 
   return value > 9;
})
 // 2

5 fill( ) 使用給定值填充一個(gè)數(shù)組
6 entries()被丧,keys()和values()——用于遍歷數(shù)組
7 includes() 數(shù)組是否包含給定的值

函數(shù)擴(kuò)展

屏幕快照 2016-10-05 08.52.52.png

1 函數(shù)參數(shù)設(shè)置了默認(rèn)值,length失效
2 rest參數(shù) ...變量名 用于獲取函數(shù)多余的參數(shù)
3 ...替換apply

// ES5的寫(xiě)法
function f(x, y, z) {  
  // ...
}
var args = [0, 1, 2];
f.apply(null, args);
// ES6的寫(xiě)法
function f(x, y, z) {  
  // ...
}
var args = [0, 1, 2];
f(...args);
//字符串轉(zhuǎn)數(shù)組
[...'hello']    // ["h","e","l","l","o"]

4 函數(shù)的name屬性
5 箭頭函數(shù)
箭頭函數(shù)有幾個(gè)使用注意點(diǎn)肌幽。
(1)函數(shù)體內(nèi)的this對(duì)象晚碾,就是定義時(shí)所在的對(duì)象,而不是使用時(shí)所在的對(duì)象喂急。
(2)不可以當(dāng)作構(gòu)造函數(shù)格嘁,也就是說(shuō),不可以使用new命令廊移,否則會(huì)拋出一個(gè)錯(cuò)誤糕簿。
(3)不可以使用arguments對(duì)象,該對(duì)象在函數(shù)體內(nèi)不存在狡孔。如果要用懂诗,可以用Rest參數(shù)代替。
(4)不可以使用yield命令苗膝,因此箭頭函數(shù)不能用作Generator函數(shù)殃恒。
上面四點(diǎn)中,第一點(diǎn)尤其值得注意辱揭。this對(duì)象的指向是可變的离唐,但是在箭頭函數(shù)中,它是固定的问窃。
6 函數(shù)綁定
obj::bind() 方法綁定在對(duì)象上
7 尾調(diào)用

function outter(x){
  return inner(x);
}

8 尾遞歸

對(duì)象擴(kuò)展

屏幕快照 2016-10-05 09.32.21.png

Object.is
就是部署這個(gè)算法的新方法亥鬓。它用來(lái)比較兩個(gè)值是否嚴(yán)格相等,與嚴(yán)格比較運(yùn)算符(===)的行為基本一致域庇。

+0 === -0 //true
NaN === NaN // false
Object.is(+0, -0) // false
Object.is(NaN, NaN) // true

Object.assign
方法用于對(duì)象的合并嵌戈,將源對(duì)象(source)的所有可枚舉屬性,復(fù)制到目標(biāo)對(duì)象(target)听皿。
淺拷貝

ES6一共有5種方法可以遍歷對(duì)象的屬性熟呛。

(1)for...in
for...in循環(huán)遍歷對(duì)象自身的和繼承的可枚舉屬性(不含Symbol屬性)。
(2)Object.keys(obj)
Object.keys返回一個(gè)數(shù)組尉姨,包括對(duì)象自身的(不含繼承的)所有可枚舉屬性(不含Symbol屬性)庵朝。
(3)Object.getOwnPropertyNames(obj)
Object.getOwnPropertyNames返回一個(gè)數(shù)組,包含對(duì)象自身的所有屬性(不含Symbol屬性,但是包括不可枚舉屬性)偿短。
(4)Object.getOwnPropertySymbols(obj)
Object.getOwnPropertySymbols返回一個(gè)數(shù)組,包含對(duì)象自身的所有Symbol屬性馋没。
(5)Reflect.ownKeys(obj)
Reflect.ownKeys返回一個(gè)數(shù)組昔逗,包含對(duì)象自身的所有屬性,不管是屬性名是Symbol或字符串篷朵,也不管是否可枚舉勾怒。
以上的5種方法遍歷對(duì)象的屬性,都遵守同樣的屬性遍歷的次序規(guī)則声旺。
首先遍歷所有屬性名為數(shù)值的屬性笔链,按照數(shù)字排序。
其次遍歷所有屬性名為字符串的屬性腮猖,按照生成時(shí)間排序鉴扫。
最后遍歷所有屬性名為Symbol值的屬性,按照生成時(shí)間排序澈缺。

Symbol

Proxy和Reflect

Set和Map

Iterator和 for...of

Generator函數(shù)

function* generator(){
  yield 1;
  yield 2;  
  yield 3;
  return 4;
}
generator.next() // { value: 1, done: false }
generator.next()// { value: 2, done: false }
generator.next()// { value: 3, done: false }
generator.next()// { value: 4, done: true }

Promise對(duì)象

一個(gè)用Promise對(duì)象實(shí)現(xiàn)的Ajax操作的例子坪创。

var getJSON = function(url) { 
  var promise = new Promise(function(resolve, reject){ 
    var client = new XMLHttpRequest(); 
    client.open("GET", url); 
    client.onreadystatechange = handler;      
    client.responseType = "json";       
    client.setRequestHeader("Accept", "application/json");     
    client.send(); 
    function handler() { 
      if (this.readyState !== 4) { 
        return; 
      } 
      if (this.status === 200) { 
        resolve(this.response); 
      } else { 
        reject(new Error(this.statusText)); 
      } }; });   
    return promise
;};
getJSON("/posts.json")
  .then(function(json) { 
      console.log('Contents: ' + json);
   }, function(error) { 
      console.error('出錯(cuò)了', error);
   });

getJSON是對(duì)XMLHttpRequest對(duì)象的封裝,用于發(fā)出一個(gè)針對(duì)JSON數(shù)據(jù)的HTTP請(qǐng)求姐赡,并且返回一個(gè)Promise對(duì)象莱预。需要注意的是,在getJSON內(nèi)部项滑,resolve函數(shù)和reject函數(shù)調(diào)用時(shí)依沮,都帶有參數(shù)。

異步操作和Async

Class

Decorator 裝飾器

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末枪狂,一起剝皮案震驚了整個(gè)濱河市危喉,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌摘完,老刑警劉巖姥饰,帶你破解...
    沈念sama閱讀 217,734評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異孝治,居然都是意外死亡列粪,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén)谈飒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)岂座,“玉大人,你說(shuō)我怎么就攤上這事杭措》咽玻” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,133評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵手素,是天一觀的道長(zhǎng)鸳址。 經(jīng)常有香客問(wèn)我瘩蚪,道長(zhǎng),這世上最難降的妖魔是什么稿黍? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,532評(píng)論 1 293
  • 正文 為了忘掉前任疹瘦,我火速辦了婚禮,結(jié)果婚禮上巡球,老公的妹妹穿的比我還像新娘言沐。我一直安慰自己,他們只是感情好酣栈,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布险胰。 她就那樣靜靜地躺著,像睡著了一般矿筝。 火紅的嫁衣襯著肌膚如雪起便。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,462評(píng)論 1 302
  • 那天窖维,我揣著相機(jī)與錄音缨睡,去河邊找鬼。 笑死陈辱,一個(gè)胖子當(dāng)著我的面吹牛奖年,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播沛贪,決...
    沈念sama閱讀 40,262評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼陋守,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了利赋?” 一聲冷哼從身側(cè)響起水评,我...
    開(kāi)封第一講書(shū)人閱讀 39,153評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎媚送,沒(méi)想到半個(gè)月后中燥,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,587評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡塘偎,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評(píng)論 3 336
  • 正文 我和宋清朗相戀三年疗涉,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片吟秩。...
    茶點(diǎn)故事閱讀 39,919評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡咱扣,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出涵防,到底是詐尸還是另有隱情闹伪,我是刑警寧澤,帶...
    沈念sama閱讀 35,635評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站偏瓤,受9級(jí)特大地震影響杀怠,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜厅克,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評(píng)論 3 329
  • 文/蒙蒙 一驮肉、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧已骇,春花似錦、人聲如沸票编。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,855評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)慧域。三九已至鲤竹,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間昔榴,已是汗流浹背辛藻。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,983評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留互订,地道東北人吱肌。 一個(gè)月前我還...
    沈念sama閱讀 48,048評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像仰禽,于是被迫代替她去往敵國(guó)和親氮墨。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 1.屬性的簡(jiǎn)潔表示法 允許直接寫(xiě)入變量和函數(shù) 上面代碼表明吐葵,ES6 允許在對(duì)象之中规揪,直接寫(xiě)變量。這時(shí)温峭,屬性名為變量...
    雨飛飛雨閱讀 1,135評(píng)論 0 3
  • 屬性的簡(jiǎn)潔表示法 ES6允許直接寫(xiě)入變量和函數(shù)猛铅,作為對(duì)象的屬性和方法。這樣的書(shū)寫(xiě)更加簡(jiǎn)潔凤藏。 上面代碼表明奸忽,ES6允...
    呼呼哥閱讀 2,920評(píng)論 0 2
  • 三,字符串?dāng)U展 3.1 Unicode表示法 ES6 做出了改進(jìn)揖庄,只要將碼點(diǎn)放入大括號(hào)月杉,就能正確解讀該字符。有了這...
    eastbaby閱讀 1,534評(píng)論 0 8
  • [TOC] 參考阮一峰的ECMAScript 6 入門(mén)參考深入淺出ES6 let和const let和const都...
    郭子web閱讀 1,781評(píng)論 0 1
  • 看這本書(shū)是在markdown在做的筆記抠艾,更友好的閱讀方式訪問(wèn): github es6.md(https://git...
    汪汪仙貝閱讀 456評(píng)論 0 0