欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

ES6的一些實(shí)用高級技巧總結(jié)

 更新時(shí)間:2023年12月29日 11:02:01   作者:俊剛  
ES6不僅在語法上有很大的改進(jìn),在代碼的組織結(jié)構(gòu)上也有重大升級,下面這篇文章主要給大家介紹了關(guān)于ES6的一些實(shí)用高級技巧的相關(guān)資料,需要的朋友可以參考下

引言

ES6(ECMAScript 2015)引入了許多新的功能和語法,其中一些功能可能相對較冷門,但非常實(shí)用。本文將介紹一些這樣的高級技巧,包括

  • Object.entries()

  • Object.fromEntries()

  • Symbol類型和Symbol屬性

  • WeakMap和WeakSet

  • Promise.allSettled()

  • BigInt

  • Array.of

  • Array.from

  • .at和flat

1. Object.entries()和Object.fromEntries()

  • Object.entries()方法返回一個(gè)給定對象自身可枚舉屬性的鍵值對數(shù)組。
  • Object.fromEntries()方法將鍵值對列表轉(zhuǎn)換為一個(gè)對象。

當(dāng)使用Object.entries()時(shí),可以傳入一個(gè)對象作為參數(shù)。這個(gè)對象可以是任何具有可枚舉屬性的對象。例如:

const obj = { a: 1, b: 2, c: 3 };

const entries = Object.entries(obj);
console.log(entries); // [["a", 1], ["b", 2], ["c", 3]]

在這個(gè)例子中,我們將一個(gè)包含三個(gè)屬性的對象傳遞給Object.entries()方法,并將返回的結(jié)果存儲(chǔ)在entries變量中。entries變量現(xiàn)在是一個(gè)包含鍵值對數(shù)組的數(shù)組。

同樣地,當(dāng)使用Object.fromEntries()時(shí),可以傳入一個(gè)鍵值對數(shù)組作為參數(shù)。這個(gè)數(shù)組中的每個(gè)元素都是一個(gè)包含鍵和值的數(shù)組。例如:

const entries = [["a", 1], ["b", 2], ["c", 3]];

const obj = Object.fromEntries(entries);
console.log(obj); // { a: 1, b: 2, c: 3 }

在這個(gè)例子中,我們將一個(gè)包含三個(gè)鍵值對的數(shù)組傳遞給Object.fromEntries()方法,并將返回的結(jié)果存儲(chǔ)在obj變量中。obj變量現(xiàn)在是一個(gè)由鍵值對組成的對象。

2. Symbol類型和Symbol屬性

  • Symbol是一種新的原始數(shù)據(jù)類型,用于創(chuàng)建唯一的標(biāo)識符。

  • Symbol屬性是對象中使用Symbol作為鍵創(chuàng)建的屬性。

    const sym = Symbol('description');
    
    const obj = {
      [sym]: 'value'
    };
    
    console.log(obj[sym]); // value
    

3. WeakMap和WeakSet

  • WeakMap是一種集合類型,其中鍵必須是對象,并且在沒有其他引用時(shí)會(huì)被垃圾回收。

  • WeakSet是一種集合類型,其中元素必須是對象,并且在沒有其他引用時(shí)會(huì)被垃圾回收。

    const wm = new WeakMap();
    const obj = {};
    wm.set(obj, 'value');
    console.log(wm.get(obj)); // value
    const ws = new WeakSet();
    ws.add(obj);
    console.log(ws.has(obj)); // true

    在這個(gè)例子中,我們創(chuàng)建了一個(gè)WeakMap和一個(gè)WeakSet實(shí)例。我們使用set()方法將obj對象添加到WeakMap中,并將值設(shè)置為'value'。然后,我們使用get()方法從WeakMap中獲取值。類似地,我們使用add()方法將obj對象添加到WeakSet中,并使用has()方法檢查集合中是否存在該對象。

4. Promise.allSettled()

  • Promise.allSettled()方法返回一個(gè)在所有給定的promise已被解析或被拒絕后決議的promise,并帶有一個(gè)對象數(shù)組,每個(gè)對象表示對應(yīng)的promise結(jié)果。
const promises = [
  Promise.resolve('resolved'),
  Promise.reject('rejected'),
  Promise.resolve('resolved')
];

Promise.allSettled(promises)
  .then(results => {
    console.log(results);
  })
  .catch(error => {
    console.error(error);
  });

 // 輸出結(jié)果:
 // [
 //  { status: 'fulfilled', value: 'resolved' },
 //  { status: 'rejected', reason: 'rejected' },
 //  { status: 'fulfilled', value: 'resolved' }
 // ]

我們創(chuàng)建了一個(gè)包含三個(gè)promise的數(shù)組,并將其傳遞給Promise.allSettled()方法。然后,我們使用.then()方法處理返回的結(jié)果數(shù)組,或使用.catch()方法處理任何錯(cuò)誤。

5. BigInt

  • BigInt是一種新的原始數(shù)據(jù)類型,用于表示任意精度的整數(shù)。
 const bigIntValue = BigInt(Number.MAX_SAFE_INTEGER) + BigInt(1);
 console.log(bigIntValue); // 9007199254740992n

6. Array.of、Array.from

  • Array.of()方法創(chuàng)建一個(gè)具有可變數(shù)量參數(shù)的新數(shù)組實(shí)例。

  • Array.of方法用于創(chuàng)建一個(gè)由參數(shù)組成的新數(shù)組。它與Array構(gòu)造函數(shù)不同之處在于,當(dāng)參數(shù)只有一個(gè)且為數(shù)字時(shí),Array.of會(huì)創(chuàng)建一個(gè)只包含該數(shù)字的數(shù)組,而不是創(chuàng)建指定長度的空數(shù)組。

  • Array.from()方法從類似數(shù)組或可迭代對象創(chuàng)建一個(gè)新的數(shù)組實(shí)例。

  • Array.from方法將類似數(shù)組或可迭代對象轉(zhuǎn)換為真正的數(shù)組。它可以接收第二個(gè)參數(shù)來進(jìn)行映射或篩選操作。

const arr1 = Array.of(1, 2, 3);
console.log(arr1); // [1, 2, 3]

const str = 'Hello';
const arr = Array.from(str);
console.log(arr); // 輸出: ['H', 'e', 'l', 'l', 'o']

const nums = [1, 2, 3, 4, 5];
const doubled = Array.from(nums, num => num * 2);
console.log(doubled); // 輸出: [2, 4, 6, 8, 10]

7. .at和flat

  • .at()方法返回指定索引處的元素。

  • .at方法用于獲取數(shù)組指定索引位置的元素,支持負(fù)數(shù)索引。

  • flat()方法將嵌套的數(shù)組扁平化為一個(gè)新的數(shù)組。

  • flat方法用于將多維數(shù)組扁平化為一維數(shù)組,可以指定扁平化的層數(shù)。

 const arr3 = [1, 2, 3, 4, 5];
 console.log(arr3.at(2)); // 3

 const arr4 = [1, [2, [3]]];
 console.log(arr4.flat()); // [1, 2, [3]]

總結(jié)

ES6引入了許多實(shí)用但相對較冷門的高級技巧。Object.entries()Object.fromEntries()可以方便地在對象和鍵值對之間進(jìn)行轉(zhuǎn)換。Symbol類型和Symbol屬性可以創(chuàng)建唯一的標(biāo)識符。WeakMapWeakSet提供了一種在沒有其他引用時(shí)自動(dòng)垃圾回收的集合類型。Promise.allSettled()可以處理多個(gè)promise并返回所有結(jié)果。BigInt允許表示任意精度的整數(shù)。Array.of、Array.from.atflat提供了更方便的數(shù)組操作方法。這些技巧可以幫助開發(fā)者更高效地編寫代碼。

到此這篇關(guān)于ES6的一些實(shí)用高級技巧的文章就介紹到這了,更多相關(guān)ES6高級技巧內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • el-table解決過濾導(dǎo)致選中的丟失的問題

    el-table解決過濾導(dǎo)致選中的丟失的問題

    在使用Element UI的el-table組件時(shí),可能會(huì)遇到過濾數(shù)據(jù)后選中狀態(tài)丟失的問題,解決這一問題的關(guān)鍵在于利用Vue的計(jì)算屬性和事件綁定功能,感興趣的朋友跟隨小編一起看看吧
    2024-09-09
  • javascript插入樣式實(shí)現(xiàn)代碼

    javascript插入樣式實(shí)現(xiàn)代碼

    最近做一個(gè)項(xiàng)目,需要javascript動(dòng)態(tài)插入樣式,結(jié)果以前的方法失效了!查了2個(gè)小時(shí)的原因竟然是自己手賤,這個(gè)最后再說
    2012-02-02
  • 小程序?qū)崿F(xiàn)投票進(jìn)度條

    小程序?qū)崿F(xiàn)投票進(jìn)度條

    這篇文章主要為大家詳細(xì)介紹了小程序?qū)崿F(xiàn)投票進(jìn)度條,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • uni-app下Worker的使用示例詳解

    uni-app下Worker的使用示例詳解

    這篇文章主要介紹了uni-app下Worker的使用示例詳解,本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2024-08-08
  • javascript 無提示關(guān)閉窗口腳本

    javascript 無提示關(guān)閉窗口腳本

    在IE7、IE8中,使用JavaScript提供的close()方法都可以關(guān)閉當(dāng)前窗口或標(biāo)簽,但都提示討厭的對話框,找了下代碼,終于可以無提示直接關(guān)閉了。
    2009-08-08
  • es6中class類靜態(tài)方法,靜態(tài)屬性,實(shí)例屬性,實(shí)例方法的理解與應(yīng)用分析

    es6中class類靜態(tài)方法,靜態(tài)屬性,實(shí)例屬性,實(shí)例方法的理解與應(yīng)用分析

    這篇文章主要介紹了es6中class類靜態(tài)方法,靜態(tài)屬性,實(shí)例屬性,實(shí)例方法的理解與應(yīng)用,結(jié)合實(shí)例形式分析了es6 class類靜態(tài)方法,靜態(tài)屬性,實(shí)例屬性,實(shí)例方法相關(guān)概念、原理、用法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2020-02-02
  • javascript控制臺詳解

    javascript控制臺詳解

    本文是寫在2011年,主要介紹 “Firefox” 瀏覽器插件 “Firebug” 的操作,如今主流瀏覽器對控制臺都已經(jīng)提供了很好的支持。我自己用的最多是谷歌的 “chrome” 瀏覽器,下面也用 “chrome” 瀏覽器來調(diào)試。
    2015-06-06
  • 用js提交表單解決一個(gè)頁面有多個(gè)提交按鈕的問題

    用js提交表單解決一個(gè)頁面有多個(gè)提交按鈕的問題

    這篇文章主要介紹了用js提交表單解決一個(gè)頁面有多個(gè)提交按鈕的問題,主要是判斷是否為提交文本,然后再執(zhí)行相應(yīng)的動(dòng)作,需要的朋友可以參考下
    2014-09-09
  • JavaSctit 利用FileReader和濾鏡上傳圖片預(yù)覽功能

    JavaSctit 利用FileReader和濾鏡上傳圖片預(yù)覽功能

    FileReader 對象允許Web應(yīng)用程序異步讀取存儲(chǔ)在用戶計(jì)算機(jī)上的文件內(nèi)容,使用 File或 Blob對象指定要讀取的文件或數(shù)據(jù)。下面通過本文給大家分享JavaSctit 利用FileReader和濾鏡上傳圖片預(yù)覽功能,需要的朋友參考下吧
    2017-09-09
  • 使用ImageMagick進(jìn)行圖片縮放、合成與裁剪(js+python)

    使用ImageMagick進(jìn)行圖片縮放、合成與裁剪(js+python)

    由于需要在服務(wù)器端處理,使用就研究使用imagemagick來進(jìn)行。同時(shí)準(zhǔn)備封裝了一個(gè)Node.js和Python的方法,主要還是講一下然后使用imagemagick來對圖片進(jìn)行縮放、合成后進(jìn)行裁剪吧
    2013-09-09

最新評論