Es6基礎(chǔ)語法

ES6 函數(shù)

1、this :this代表當(dāng)前正在執(zhí)行的對象

function fn () {
  console.log(this)
}
fn() // window 
const obj = new fn();  // { }
fn.call({ name:"1" })  // { name:'1' }

2摹恨、箭頭函數(shù)
(1)箭頭函數(shù)的this是在定義的時候就固定不變了
(2)箭頭函數(shù) 沒有自己的this
(3)箭頭函數(shù) 不能當(dāng)類(構(gòu)造器)使用 不可以 new
(4)箭頭函數(shù) 沒有 arguments

  const fn = () => {
    console.log(this);
    console.log(arguments);
  }
  fn()   // undefined    嚴(yán)格模式下    在非嚴(yán)格模式下是 window 
  const obj = new fn();  // undefined

new 一個實例 執(zhí)行 4 步
(1)創(chuàng)建一個空對象
(2) 執(zhí)行構(gòu)造器 Person 把this指向這個 {}
(3) 添加屬性
(4) 返回當(dāng)前實例
fn.call({ name:"1" }) // undefined

3、怎么改變this的指向

call ()

  function person (params) {
     this.name = params
     console.log(this.name);    //  27
   }
   person.call({},27)

bind ()

  function person (params) {
    this.name = params
     console.log(this,this.name);    //  27
   }
   const fn2 = person.bind({age:22},'小花')
   fn2()

ES6 數(shù)組 方法

map filter some forEach every find findIndex reduce
1卓练、 map 返回一個新數(shù)組 長度不變

  const arr = [1, 3, 5, 7, 9]

  const newArr = arr.map(v => v+1)  // [2, 4, 6, 8, 10]

  const newArr = arr.map(v => v>3)   //[false, false, true, true, true]

  const newArr = arr.map(v => v>3 && v)   //[false, false, 5, 7, 9]

2隘蝎、filter 返回一個新數(shù)組 長度改變 過濾

  const arr = [1, 3, 5, 7, 9]

  const newArr = arr.filter(v => v>3)    //  [5, 7, 9]

3、 some 只要返回true 就會停止循環(huán)

  const arr = [1, 3, 5, 7, 9]

  const newArr = arr.some(v => v===7)    //  返回true  循環(huán)了3次

4昆庇、 every 只要返回false 就會停止循環(huán)

  const arr = [1, 3, 5, 7, 9]

  const newArr = arr.every(v => v===7  )    // 只執(zhí)行了1次   返回false

5末贾、 foeEach 普通循環(huán) 沒有返回值

  const arr = [1, 3, 5, 7, 9]

  arr.forEach(v => {

    console.log(v);  //  1, 3, 5, 7, 9

  }) 

6、 find 為true的時候就會停止循環(huán) 返回 當(dāng)前的值

  const data = [{name:'1',id:1}, {name:'2',id:2}, {name:'3',id:3}]

  const newObj = data.find(v => v.id===2)

  console.log(newObj);        //  {name:'2',id:2}

7整吆、 findIndex 為true的時候就會停止循環(huán) 返回 當(dāng)前的值的下標(biāo)

  const data = [{name:'1',id:1}, {name:'2',id:2}, {name:'3',id:3}]

  const newObj = data.find(v => v.id===2)

  console.log(newObj);        //  返回 1

8拱撵、 reduce 兩個參數(shù) (函數(shù)[必須有return],默認(rèn)值)
(1)無默認(rèn)值


  const arr = [1, 3, 5, 7, 9]

  const sum=arr.reduce((a,b)=>{

    return a+b

    // a ->1  b->3         第1次

    // a ->4  b->5         第2次

    // a ->9  b->7  ....   第..次

  })

  console.log(sum);      // 25

(2)有默認(rèn)值


const arr = [1, 3, 1, 7, 5, 7, 9]

    // a ->{}  b->1              第1次

    // a ->{1:[1]}  b->3         第2次

    // a ->{1:[1],3:[3]}  b->1   第3次

    // a ->{1:[1,1],3:[3]}  b->7   第4次  ....

  const newObj = arr.reduce((a,b)=>{

           if (a[b]) {   a[b].push(b)   } else {   a[b] = [b]   }

           return a

  }, {})

  console.log(newObj);  //{1:[1, 1],3:[3],5:[5],7:[7, 7],9:[9]}

(3)在antd 3.26 表單回填應(yīng)用


  mapPropsToFields({ obj }) {

     return Object.keys(obj).reduce((pre, d) => {

        return {

         ...pre,

         [d]: Form.createFormField({ value: obj[d] })

        }

      }, {})

   },

9表蝙、數(shù)組的擴展運算符 ...

  const arr = [1, 2, 3]

  const brr = [4, 5, 6]

  console.log([...arr,...brr]);  // [1,2,3,4,5,6]

10拴测、 fill 填充數(shù)組

  const str=new Array(50).fill('-').join('')

  console.log(str);  //  ---------------------

11、includes 是否包含

  const arr = [1, 2, 3]

  console.log(arr.includes(2))   // true

12府蛇、flat 數(shù)組扁平化

  const arr = [1, [2, [3,4] ] ]

  //  默認(rèn)二維數(shù)組扁平化

  console.log(arr.flat() )   // [1,2,[3,4] ]

  //  Infinity 多維數(shù)組扁平化

  console.log(arr.flat(Infinity) )  // [1,2,3,4]   

13集索、Set 數(shù)組去重

   let crr= [1,2,1,3,4,5,1,2]

   console.log([...new Set(crr)]);    //  [1,2,3,4,5]

ES6 對象 方法

1、Object.assign(新對象汇跨,對象1务荆,對象2,..) 合并對象
注: 是個淺拷貝

   const obj1 = { name:"小花" }

   const obj2 = { age:20 }

   Object.assign(obj1,obj2) // 淺拷貝   { name:"小花", age:20 }

   //{...obj1,...obj2}        // 淺拷貝   { name:"小花", age:20 }

2穷遂、keys 取到所有的key值 values 取到所有的value值

   const obj = { name:"小花", age:20, sex:"男" }

   console.log(Object.keys(obj));  // ["name", "age", "sex"]

   console.log(Object.values(obj)); //  ["小花", 20, "男"]

3函匕、Object.entries( )

  const obj = { name:"小花", age:20, sex:"男" }

  Object.entries(obj)   // [ ["name", "小花"],["age", 20],["sex", "男"] ]

取出對象里的所有key 和 value

(1)、reduce

       Object.entries(obj).reduce((v,[key,value])=>{
              console.log(key,value)           // name 小花  age 20  sex 男
        },'')

(2)蚪黑、for of

        for(let [key,value] of Object.entries(obj)) {
             console.log(key,value)           // name 小花  age 20  sex 男
        }

ES6 Promise

1)對象的狀態(tài)不受外界影響盅惜。Promise對象代表一個異步操作,有三種狀態(tài):pending(進行中)忌穿、fulfilled(已成功)和rejected(已失斒慵拧)。

2)一旦狀態(tài)改變掠剑,就不會再變屈芜,任何時候都可以得到這個結(jié)果。Promise對象的狀態(tài)改變朴译,只有兩種可能:從pending變?yōu)閒ulfilled和從pending變?yōu)閞ejected沸伏。

image

(1)、特點:處理異步 異步的代碼以同步的方式

(2)动分、用法 :
new Promise((resolve,reject)=>{ resolve() 成功 reject() 失敗 })
(3)毅糟、狀態(tài):進行中 已成功 已失敗 (一旦固定就不會再改變)

1、 Promise.all() -- 用于將多個 Promise 實例澜公,包裝成一個新的 Promise 實例 兩個promise一起觸發(fā)

const url = "http://api.baxiaobu.com/index.php/home/v1/register"

const param = qs.stringify({

  username:"1111",

  pwd:"222"

})

const fn0 = () => axios.post(url,param)

const fn1 = () => axios.post(url,param)

const p0 = Promise.all([fn0(),fn1()])

p0.then(res=>console.log(res))

.catch()

2姆另、 async 和函數(shù)一起用 函數(shù)里需要異步方法前面加上 await
await 不止異步 任何值 兩個promise逐步觸發(fā)

const URL="https://blogs.zdldove.top/Home/Apis/listWithPage"
async function fn () {
    const res0 = await axios.post(URL)
    console.log(1);
    const res1 = await axios.post(URL)
    console.log(res0,res1);
}
fn()

3喇肋、async 原理
async === generator + 自動執(zhí)行器

function spawn (genF) {
  return new Promise((resolve, reject) => {
    const gen = genF()
    function step (nextF) {
      let next = nextF()
      if(next.done) {
         return resolve(next.value)}    
         Promise.resolve(next.value)
          .then(v => {
             step(() => gen.next(v))
          })
      }
    step(() => gen.next(undefined))
  })
}

ES6 解構(gòu)賦值

1、數(shù)組的解構(gòu)賦值

ES5:
var a = 1;
var b = 2;
ES6:
var [a,b] = [1,2]
以上模式匹配寫法

數(shù)組嵌套解構(gòu)

let [a,[[b],c]] = [1,[[2],3]];
a//1
b//2
c//3
let [arr,..brr] = [1,2,3,4];
arr//1
brr//[2,3,4]

如果解構(gòu)不成功迹辐,變量的值就是undefined

let [a] = [];
let [b,a] = [1];
// a就是undefined

Set解構(gòu)蝶防,也可以使用數(shù)組的解構(gòu)賦值

let [x,y,z] = new Set(["a","b","c"]);
x //a

2、對象解構(gòu)賦值

對象的解構(gòu)與數(shù)組的解構(gòu)有一個重要的不同明吩;數(shù)組的元素是按次序排列的间学,變量的取之由他的位置決定;而對象的屬性是沒有次序的印荔,變量必須與屬性同名低葫,才能取到正確的值

let {bar,foo} = {foo:"aaa",bar:"bbb"};
bar // bbb
foo //aaa
let {baz,foo} = {foo:"aaa",bar:"bbb"};
baz //屬性不同名是 undefined

3、數(shù)值和布爾值的解構(gòu)賦值

解構(gòu)賦值時仍律,若果右邊是數(shù)值或者布爾值嘿悬,則會先轉(zhuǎn)成對象

let {toString:s} = 123;
s === Number.prototype.toString //true
let {toString:s} = true;
s === Boolean.prototype.toString //true
//undefined和null無法轉(zhuǎn)為對象,所以對他們解構(gòu)賦值就會報錯
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末水泉,一起剝皮案震驚了整個濱河市善涨,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌草则,老刑警劉巖钢拧,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異炕横,居然都是意外死亡源内,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進店門看锉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人塔鳍,你說我怎么就攤上這事伯铣。” “怎么了轮纫?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵腔寡,是天一觀的道長。 經(jīng)常有香客問我掌唾,道長放前,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任糯彬,我火速辦了婚禮凭语,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘撩扒。我一直安慰自己似扔,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著炒辉,像睡著了一般豪墅。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上黔寇,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天偶器,我揣著相機與錄音,去河邊找鬼缝裤。 笑死屏轰,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的倘是。 我是一名探鬼主播亭枷,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼搀崭!你這毒婦竟也來了叨粘?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤瘤睹,失蹤者是張志新(化名)和其女友劉穎升敲,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體轰传,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡驴党,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了获茬。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片港庄。...
    茶點故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖恕曲,靈堂內(nèi)的尸體忽然破棺而出鹏氧,到底是詐尸還是另有隱情,我是刑警寧澤佩谣,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布把还,位于F島的核電站,受9級特大地震影響茸俭,放射性物質(zhì)發(fā)生泄漏吊履。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一调鬓、第九天 我趴在偏房一處隱蔽的房頂上張望艇炎。 院中可真熱鬧,春花似錦腾窝、人聲如沸冕臭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽辜贵。三九已至悯蝉,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間托慨,已是汗流浹背鼻由。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留厚棵,地道東北人蕉世。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像婆硬,于是被迫代替她去往敵國和親狠轻。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,762評論 2 345