久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合

站長(zhǎng)資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

es6的三個(gè)點(diǎn)是什么函數(shù)

es6的三個(gè)點(diǎn)不是函數(shù),而是一種運(yùn)算符。三個(gè)點(diǎn)“…”指的是“擴(kuò)展運(yùn)算符”,可將可迭代對(duì)象展開到其單獨(dú)的元素中;所謂的可迭代對(duì)象就是任何能用for of循環(huán)進(jìn)行遍歷的對(duì)象,例如數(shù)組、字符串、Map、Set、DOM節(jié)點(diǎn)等。

es6的三個(gè)點(diǎn)是什么函數(shù)

前端(vue)入門到精通課程:進(jìn)入學(xué)習(xí)
Apipost = Postman + Swagger + Mock + Jmeter 超好用的API調(diào)試工具:點(diǎn)擊使用

本教程操作環(huán)境:windows7系統(tǒng)、javascript1.8.5版、Dell G3電腦。

擴(kuò)展操作符 … 是ES6中引入的,將可迭代對(duì)象展開到其單獨(dú)的元素中,所謂的可迭代對(duì)象就是任何能用for of循環(huán)進(jìn)行遍歷的對(duì)象,例如:數(shù)組(數(shù)組常用方法)、字符串、Map (悟透Map)、Set (Set 如何使用?)、DOM節(jié)點(diǎn)等。

數(shù)組擴(kuò)展運(yùn)算符

擴(kuò)展運(yùn)算符(spread)是三個(gè)點(diǎn)(...)。它好比 rest 參數(shù)的逆運(yùn)算,將一個(gè)數(shù)組轉(zhuǎn)為用逗號(hào)分隔的參數(shù)序列。擴(kuò)展運(yùn)算符與正常的函數(shù)參數(shù)可以結(jié)合使用,后面也可以放置表達(dá)式,但如果后面是一個(gè)空數(shù)組,則不產(chǎn)生任何效果。

let arr = []; arr.push(...[1,2,3,4,5]); console.log(arr); //[1,2,3,4,5] console.log(1, ...[2, 3, 4], 5) //1 2 3 4 5 console.log(...(1 > 0 ? ['a'] : [])); //a console.log([...[], 1]); //[1]
登錄后復(fù)制

意義

替代函數(shù)的apply方法

由于擴(kuò)展運(yùn)算符可以展開數(shù)組,所以不再需要apply方法,將數(shù)組轉(zhuǎn)為函數(shù)的參數(shù)了。

// ES5 的寫法 Math.max.apply(null, [14, 3, 77]) // ES6 的寫法 Math.max(...[14, 3, 77])
登錄后復(fù)制

應(yīng)用

  • 復(fù)制數(shù)組

    // ES5 的寫法 const a1 = [1, 2]; const a2 = a1.concat(); // ES6 的寫法 const a1 = [1, 2]; const a2 = [...a1]; //或 const [...a2] = a1;
    登錄后復(fù)制

  • 合并數(shù)組

    // ES5 的寫法 [1, 2].concat(more); arr1.concat(arr2, arr3); // ES6 的寫法 [1, 2, ...more]; [...arr1, ...arr2, ...arr3]
    登錄后復(fù)制

  • 與解構(gòu)賦值結(jié)合

    // ES5 的寫法 a = list[0], rest = list.slice(1) // ES6 的寫法 [a, ...rest] = list
    登錄后復(fù)制

    注意:如果將擴(kuò)展運(yùn)算符用于數(shù)組賦值,只能放在參數(shù)的最后一位,否則會(huì)報(bào)錯(cuò)。

  • 轉(zhuǎn)換字符串

    擴(kuò)展運(yùn)算符還可以將字符串轉(zhuǎn)為真正的數(shù)組,并且能夠正確識(shí)別四個(gè)字節(jié)的 Unicode 字符。

    'xuD83DuDE80y'.length // 4 [...'xuD83DuDE80y'].length // 3  let str = 'xuD83DuDE80y'; str.split('').reverse().join('') // 'yuDE80uD83Dx' [...str].reverse().join('')      // 'yuD83DuDE80x'
    登錄后復(fù)制

  • 實(shí)現(xiàn)Iterator接口的對(duì)象

    任何 Iterator 接口的對(duì)象(參閱 Iterator 一章),都可以用擴(kuò)展運(yùn)算符轉(zhuǎn)為真正的數(shù)組。

  • Map和Set結(jié)構(gòu)、Generator函數(shù)

    • 擴(kuò)展運(yùn)算符內(nèi)部調(diào)用的是數(shù)據(jù)結(jié)構(gòu)的 Iterator 接口,因此只要具有 Iterator 接口的對(duì)象,都可以使用擴(kuò)展運(yùn)算符,比如 Map 結(jié)構(gòu)。

    let map = new Map([  [1, 'one'],  [2, 'two'],  [3, 'three'], ]);  let arr = [...map.keys()]; // [1, 2, 3]
    登錄后復(fù)制

    • Generator 函數(shù)運(yùn)行后,返回一個(gè)遍歷器對(duì)象,因此也可以使用擴(kuò)展運(yùn)算符。

    const go = function*(){  yield 1;  yield 2;  yield 3; };  [...go()] // [1, 2, 3]
    登錄后復(fù)制

    • 如果對(duì)沒有 Iterator 接口的對(duì)象,使用擴(kuò)展運(yùn)算符,將會(huì)報(bào)錯(cuò)。

對(duì)象的擴(kuò)展運(yùn)算符

概念

對(duì)象的解構(gòu)賦值用于從一個(gè)對(duì)象取值,相當(dāng)于將目標(biāo)對(duì)象自身的所有可遍歷的(enumerable)、但尚未被讀取的屬性,分配到指定的對(duì)象上面。所有的鍵和它們的值,都會(huì)拷貝到新對(duì)象上面。

let { x, y, ...z } = { x: 1, y: 2, a: 3, b: 4 }; x // 1 y // 2 z // { a: 3, b: 4 }
登錄后復(fù)制

注意:

  • 由于解構(gòu)賦值要求等號(hào)右邊是一個(gè)對(duì)象,所以如果等號(hào)右邊是undefinednull,就會(huì)報(bào)錯(cuò),因?yàn)樗鼈儫o法轉(zhuǎn)為對(duì)象。

  • 解構(gòu)賦值必須是最后一個(gè)參數(shù),否則會(huì)報(bào)錯(cuò)。

  • 解構(gòu)賦值的拷貝是淺拷貝,即如果一個(gè)鍵的值是復(fù)合類型的值(數(shù)組、對(duì)象、函數(shù))、那么解構(gòu)賦值拷貝的是這個(gè)值的引用,而不是這個(gè)值的副本。

    let obj = { a: { b: 1 } }; let { ...x } = obj; obj.a.b = 2; x.a.b // 2
    登錄后復(fù)制

  • 擴(kuò)展運(yùn)算符的解構(gòu)賦值,不能復(fù)制繼承自原型對(duì)象的屬性。

    let o1 = { a: 1 }; let o2 = { b: 2 }; o2.__proto__ = o1; let { ...o3 } = o2; o3 // { b: 2 } o3.a // undefined   const o = Object.create({ x: 1, y: 2 }); o.z = 3;  let { x, ...newObj } = o; let { y, z } = newObj; x // 1 y // undefined z // 3  let { x, ...{ y, z } } = o; // SyntaxError: ... must be followed by an identifier in declaration contexts
    登錄后復(fù)制

應(yīng)用

  • 擴(kuò)展某個(gè)函數(shù)的參數(shù),引入其他操作。

function baseFunction({ a, b }) { // ... } function wrapperFunction({ x, y, ...restConfig }) { // 使用 x 和 y 參數(shù)進(jìn)行操作 // 其余參數(shù)傳給原始函數(shù) return baseFunction(restConfig); }
登錄后復(fù)制

  • 取出參數(shù)對(duì)象的所有可遍歷屬性,拷貝到當(dāng)前對(duì)象之中。

let z = { a: 3, b: 4 }; let n = { ...z }; n // { a: 3, b: 4 }  let aClone = { ...a }; // 等同于 let aClone = Object.assign({}, a);  //上面的例子只是拷貝了對(duì)象實(shí)例的屬性,如果想完整克隆一個(gè)對(duì)象,還拷貝對(duì)象原型的屬性,可以采用下面的寫法。 // 寫法一 const clone1 = Object.assign( Object.create(Object.getPrototypeOf(obj)), obj ); // 寫法二 const clone2 = Object.create( Object.getPrototypeOf(obj), Object.getOwnPropertyDescriptors(obj) )
登錄后復(fù)制

  • 合并兩個(gè)對(duì)象。

    let ab = { ...a, ...b }; // 等同于 let ab = Object.assign({}, a, b);   //如果用戶自定義的屬性,放在擴(kuò)展運(yùn)算符后面,則擴(kuò)展運(yùn)算符內(nèi)部的同名屬性會(huì)被覆蓋掉。 let aWithOverrides = { ...a, x: 1, y: 2 }; // 等同于 let aWithOverrides = { ...a, ...{ x: 1, y: 2 } }; // 等同于 let x = 1, y = 2, aWithOverrides = { ...a, x, y }; // 等同于 let aWithOverrides = Object.assign({}, a, { x: 1, y: 2 });
    登錄后復(fù)制

  • 修改現(xiàn)有對(duì)象部分的屬性。

    let newVersion = { ...previousVersion, name: 'New Name' // Override the name property };
    登錄后復(fù)制

其他

  • 如果把自定義屬性放在擴(kuò)展運(yùn)算符前面,就變成了設(shè)置新對(duì)象的默認(rèn)屬性值。
  • 與數(shù)組的擴(kuò)展運(yùn)算符一樣,對(duì)象的擴(kuò)展運(yùn)算符后面可以跟表達(dá)式。
  • 如果擴(kuò)展運(yùn)算符后面是一個(gè)空對(duì)象,則沒有任何效果。
  • 如果擴(kuò)展運(yùn)算符的參數(shù)是nullundefined,這兩個(gè)值會(huì)被忽略,不會(huì)報(bào)錯(cuò)。
  • 擴(kuò)展運(yùn)算符的參數(shù)對(duì)象之中,如果有取值函數(shù)get,這個(gè)函數(shù)是會(huì)執(zhí)行的。

贊(0)
分享到: 更多 (0)
?
網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合
欧美日韩视频免费观看| 久久国产日韩欧美精品| 牛牛精品成人免费视频| 97se亚洲| 69精品国产久热在线观看| 亚洲精品一级| 综合激情一区| 18国产精品| 久久精品欧洲| 国产亚洲一区二区手机在线观看 | 国产videos久久| 国产精品久久久久久久久久妞妞| 欧美精品三级在线| 精品一二三区| 国产91一区| 水野朝阳av一区二区三区| 日本在线成人| 久久一区国产| 亚洲激情二区| 你懂的亚洲视频| 日韩亚洲精品在线| 欧美激情亚洲| 亚洲在线观看| 精品成av人一区二区三区| 国产盗摄——sm在线视频| 在线亚洲一区| 成人在线视频区| 亚洲久久在线| 久久青草久久| 国产精品分类| 亚洲欧美日韩视频二区| 国产成人久久精品一区二区三区| 天堂网在线观看国产精品| 国产日韩三级| 性一交一乱一区二区洋洋av| 激情中国色综合| 免费美女久久99| 国产欧美一区二区三区精品酒店| 一本色道精品久久一区二区三区| 日本亚洲三级在线| 国产福利电影在线播放| 日本一区福利在线| 亚洲成人日韩| 久久久人人人| 天堂中文在线播放| 国产欧美二区| 日本中文字幕视频一区| 在线亚洲激情| 亚洲网站视频| 亚洲伦乱视频| 国产网站在线| 免费看av不卡| 国产精品igao视频网网址不卡日韩 | 国产欧美日韩精品一区二区免费 | 国产精品宾馆| 亚洲精品女人| 黄色亚洲精品| 91精品国产成人观看| 亚洲精品**中文毛片| 免费观看在线综合色| 国产精品乱战久久久| 免费看欧美美女黄的网站| 中文字幕系列一区| 久久精品99久久无色码中文字幕| 国产精品99一区二区三| 精品国产18久久久久久二百| 国产伊人久久| 精品国产亚洲日本| 久久久久九九精品影院| 国产精品久久久久久久久久白浆| 国产精品一区二区精品| 视频精品一区二区| 久久国产免费看| 国产精品视频一区视频二区| 日韩中文字幕一区二区高清99| 久久国产精品毛片| 免费的成人av| 国产日韩欧美高清免费| 美女久久久久久 | 国产精品色在线网站| 老色鬼精品视频在线观看播放| 美女av一区| 国产精品蜜芽在线观看| 福利视频一区| 亚洲天堂成人| 午夜在线视频观看日韩17c| 日韩av三区| 亚洲伦乱视频| 中文视频一区| 精品三级av在线导航| 精品一区欧美| 欧美亚洲国产日韩| 99久久亚洲精品蜜臀| 亚洲在线久久| 88xx成人免费观看视频库| 日韩一区欧美二区| 精品视频国产| 国产精品日韩| 精品一区二区三区四区五区| 美女被久久久| 国产亚洲欧美日韩在线观看一区二区 | 日本99精品| 国产91久久精品一区二区| 国产欧美日韩一级| 亚洲专区在线| а√在线中文在线新版| 97成人在线| 久久av在线| 999久久久精品国产| 麻豆国产91在线播放| 免费在线观看成人| 99久久99久久精品国产片果冰| 国产日韩欧美中文在线| 蜜臀精品一区二区三区在线观看| sm久久捆绑调教精品一区| 国产精品白丝久久av网站| 日本电影久久久| 美女网站久久| 欧美日韩中文一区二区| 国产一区二区精品福利地址| 国产日韩欧美三级| 日韩av不卡一区二区| 亚洲欧美久久精品| 亚洲综合小说| 日韩一区二区三区高清在线观看| 久久网站免费观看| 亚洲成人va| 亚洲午夜久久久久久尤物 | 9久re热视频在线精品| 国产欧美日韩在线一区二区| 亚洲精品无播放器在线播放| 香蕉久久夜色精品国产| 国产精品老牛| 亚洲九九精品| 中文字幕av一区二区三区人 | 亚洲香蕉网站| 中文字幕在线看片| 国产极品久久久久久久久波多结野 | 精品高清久久| 91亚洲自偷观看高清| 欧美羞羞视频| 五月综合激情| 91成人精品观看| 麻豆精品新av中文字幕| 亚洲一级少妇| 日韩一区欧美二区| 麻豆国产91在线播放| 麻豆高清免费国产一区| 精精国产xxxx视频在线野外| 亚洲国产日韩欧美在线| 青青国产91久久久久久| 色偷偷色偷偷色偷偷在线视频| 亚洲一区二区网站| 国产精品v一区二区三区| 91一区二区| 日韩精品社区| 欧美日韩精品在线一区| 国产欧美日本| 久久不射网站| 四虎国产精品免费观看| 蜜臀av性久久久久蜜臀aⅴ四虎| 亚洲免费专区| 亚州av一区| 美日韩一区二区三区| 久久蜜桃精品| 欧美精品国产| 欧美日韩中文一区二区| 久久激情综合网| 99成人在线| 亚洲精品在线影院| 国产精品入口久久| 免播放器亚洲一区| 国产理论在线| 国产精品久久久久久久久久久久久久久 | 美女久久99| 三上悠亚国产精品一区二区三区| 日韩中文字幕无砖| 欧美在线亚洲| 欧美日韩免费看片| 国产精品色婷婷在线观看| 日本大胆欧美人术艺术动态| 麻豆国产精品视频| 欧美在线不卡| 亚洲精品亚洲人成在线观看| 欧美美女一区| 免费视频一区三区| 国产99久久| 香蕉成人av| 欧美日韩免费看片| 日韩在线第七页| 亚洲精品在线影院| 国产videos久久| 日韩成人精品一区| 裤袜国产欧美精品一区| 老司机精品在线| 麻豆传媒一区二区三区| 蜜臀av性久久久久蜜臀aⅴ四虎| 午夜宅男久久久| 免费在线观看成人| 日韩高清不卡在线|