AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當(dāng)前位置:首頁 > 科技  > 軟件

ES13中五個最具變革性的JavaScript特性

來源: 責(zé)編: 時間:2024-07-25 16:45:31 570觀看
導(dǎo)讀ES13包含了許多有價值的特性,徹底改變了我們編寫JavaScript的方式。從異步升級到數(shù)組語法糖等等,讓我們來看看這些特性,看看你是否錯過了其中一些。1. 頂級await在ES13之前,我們永遠(yuǎn)不能在全局作用域中使用await。? 之前

eVV28資訊網(wǎng)——每日最新資訊28at.com

ES13包含了許多有價值的特性,徹底改變了我們編寫JavaScript的方式。eVV28資訊網(wǎng)——每日最新資訊28at.com

從異步升級到數(shù)組語法糖等等,讓我們來看看這些特性,看看你是否錯過了其中一些。eVV28資訊網(wǎng)——每日最新資訊28at.com

1. 頂級await

在ES13之前,我們永遠(yuǎn)不能在全局作用域中使用await。eVV28資訊網(wǎng)——每日最新資訊28at.com

? 之前:eVV28資訊網(wǎng)——每日最新資訊28at.com

// X 語法錯誤:await 只在異步函數(shù)中有效await setTimeoutAsync(3000);function setTimeoutAsync(timeout) {  return new Promise((resolve) => {    setTimeout(() => {      resolve('codingbeautydev.com');    }, timeout);  });}

我們總是必須將其放在async函數(shù)中或創(chuàng)建一個async IIFE(立即執(zhí)行函數(shù)表達(dá)式):eVV28資訊網(wǎng)——每日最新資訊28at.com

// 異步立即執(zhí)行函數(shù)(async () => {  await setTimeoutAsync(3000);})();// 類似 C++async function main() {  await setTimeoutAsync(3000);}

? ES13之后:eVV28資訊網(wǎng)——每日最新資訊28at.com

// ? 等待超時 - 沒有拋出錯誤await setTimeoutAsync(3000);function setTimeoutAsync(timeout) {  return new Promise((resolve) => {    setTimeout(() => {      resolve('codingbeautydev.com');    }, timeout);  });}

2. 類聲明升級

(1)類字段聲明

在ES13之前,我們只能在構(gòu)造函數(shù)中聲明類字段: 與許多其他語言不同,我們不能在類的最外層作用域中聲明或定義它們。eVV28資訊網(wǎng)——每日最新資訊28at.com

? 之前:eVV28資訊網(wǎng)——每日最新資訊28at.com

? 現(xiàn)在有了ES13: 就像在TypeScript中一樣:eVV28資訊網(wǎng)——每日最新資訊28at.com

(2)私有方法和字段

在ES13之前,創(chuàng)建私有方法是不可能的。 我們還必須使用丑陋的下劃線hack來表示私有性 — 但那只是一個指示。eVV28資訊網(wǎng)——每日最新資訊28at.com

? 之前:eVV28資訊網(wǎng)——每日最新資訊28at.com

class Person {  _firstName = 'Tari';  _lastName = 'Ibaba';  get name() {    return `${this._firstName} ${this._lastName}`;  }}const person = new Person();console.log(person.name); // Tari Ibaba// 我們?nèi)匀豢梢栽L問私有成員!console.log(person._firstName); // Tariconsole.log(person._lastName); // Ibaba// 它們也可以被修改!person._firstName = 'Lionel';person._lastName = 'Messi';console.log(person.name); // Lionel Messi

? ES13之后:eVV28資訊網(wǎng)——每日最新資訊28at.com

我們可以通過在字段前加上井號(#)來為類添加私有字段和成員:eVV28資訊網(wǎng)——每日最新資訊28at.com

如果你試圖從類外部訪問它,你會得到一個語法錯誤:eVV28資訊網(wǎng)——每日最新資訊28at.com

class Person {  #firstName = 'Tari';  #lastName = 'Ibaba';  get name() {    return `${this.#firstName} ${this.#lastName}`;  }}const person = new Person();console.log(person.name);// 語法錯誤:私有字段 '#firstName' 必須在封閉的類中聲明console.log(person.#firstName);console.log(person.#lastName);

我們可以從錯誤消息中看到一些有趣的東西:eVV28資訊網(wǎng)——每日最新資訊28at.com

編譯器甚至不期望你從類外部嘗試訪問私有字段 — 它假設(shè)你是在嘗試創(chuàng)建一個。eVV28資訊網(wǎng)——每日最新資訊28at.com

(3)靜態(tài)類字段和靜態(tài)私有方法

靜態(tài)字段 — 類本身的屬性,而不是任何特定實(shí)例的屬性。eVV28資訊網(wǎng)——每日最新資訊28at.com

自ES13以來,我們現(xiàn)在可以輕松地為任何類創(chuàng)建它們:eVV28資訊網(wǎng)——每日最新資訊28at.com

class Person {  static #count = 0;  static eyeCount = 2;  static getCount() {    // 使用 this 訪問同級靜態(tài)成員    return this.#count;  }  // 實(shí)例成員  constructor() {    // 使用 this.constructor 訪問靜態(tài)成員    this.constructor.#incrementCount();  }  static #incrementCount() {    this.#count++;  }}const person1 = new Person();const person2 = new Person();console.log(Person.getCount()); // 2

3. 數(shù)組升級:新的at()方法

通常我們會使用方括號([])來訪問數(shù)組的第N個元素。eVV28資訊網(wǎng)——每日最新資訊28at.com

const arr = ['a', 'b', 'c', 'd'];console.log(arr[1]); // b

但從末尾訪問第N個項(xiàng)目一直是一個痛點(diǎn) -- 我們必須使用arr.length - N進(jìn)行索引:eVV28資訊網(wǎng)——每日最新資訊28at.com

? ES13之前:eVV28資訊網(wǎng)——每日最新資訊28at.com

const arr = ['a', 'b', 'c', 'd'];// 倒數(shù)第1個元素console.log(arr[arr.length - 1]); // d// 倒數(shù)第2個元素console.log(arr[arr.length - 2]); // c

幸運(yùn)的是,ES13帶來了一個新的at()方法,解決了所有這些問題:eVV28資訊網(wǎng)——每日最新資訊28at.com

const str = 'Coding Beauty';console.log(str.at(-1)); // y 倒數(shù)第1個字符console.log(str.at(-2)); // t 倒數(shù)第2個字符

4. 靜態(tài)類塊

隨著靜態(tài)字段的出現(xiàn),靜態(tài)塊也來了。 只在創(chuàng)建時執(zhí)行一次代碼 — 就像C#和Java等OOP語言中的靜態(tài)構(gòu)造函數(shù)。 所以你可以在類中創(chuàng)建任意多個靜態(tài)塊 — 所有代碼都會按你定義的順序運(yùn)行:eVV28資訊網(wǎng)——每日最新資訊28at.com

class Vehicle {  static defaultColor = 'blue';}class Car extends Vehicle {  static colors = [];  //  
                

本文鏈接:http://www.tebozhan.com/showinfo-26-103577-0.htmlES13中五個最具變革性的JavaScript特性

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 全棧開發(fā)要掌握什么技術(shù)?

下一篇: 抖音新規(guī):整體治理虛假“身份”“內(nèi)容”“營銷”“流量”四類行為

標(biāo)簽:
  • 熱門焦點(diǎn)
  • 一加Ace2 Pro官宣:普及16G內(nèi)存 引領(lǐng)24G

    一加官方今天繼續(xù)為本月發(fā)布的新機(jī)一加Ace2 Pro帶來預(yù)熱,公布了內(nèi)存方面的信息?!疤蕴?8GB ,12GB 起步,16GB 普及,24GB 引領(lǐng),還有呢?#一加Ace2Pro#,2023 年 8 月,敬請期待?!蓖瑫r
  • 太卷!Redmi MAX 100英寸電視便宜了:12999元買Redmi史上最大屏

    8月5日消息,從小米商城了解到,Redmi MAX 100英寸巨屏電視日前迎來官方優(yōu)惠,到手價12999元,比發(fā)布價便宜了7000元,在大屏電視市場開卷。據(jù)了解,Redmi MAX 100
  • 消息稱迪士尼要拍真人版《魔發(fā)奇緣》:女主可能也找黑人演員

    8月5日消息,迪士尼確實(shí)有點(diǎn)忙,忙著將不少動畫改成真人版,繼《美人魚》后,真人版《白雪公主》、《魔發(fā)奇緣》也在路上了。據(jù)外媒消息稱,迪士尼將打造真人版
  • 線程通訊的三種方法!通俗易懂

    線程通信是指多個線程之間通過某種機(jī)制進(jìn)行協(xié)調(diào)和交互,例如,線程等待和通知機(jī)制就是線程通訊的主要手段之一。 在 Java 中,線程等待和通知的實(shí)現(xiàn)手段有以下幾種方式:Object 類下
  • 三言兩語說透設(shè)計模式的藝術(shù)-單例模式

    寫在前面單例模式是一種常用的軟件設(shè)計模式,它所創(chuàng)建的對象只有一個實(shí)例,且該實(shí)例易于被外界訪問。單例對象由于只有一個實(shí)例,所以它可以方便地被系統(tǒng)中的其他對象共享,從而減少
  • 三萬字盤點(diǎn) Spring 九大核心基礎(chǔ)功能

    大家好,我是三友~~今天來跟大家聊一聊Spring的9大核心基礎(chǔ)功能。話不多說,先上目錄:圖片友情提示,本文過長,建議收藏,嘿嘿嘿!一、資源管理資源管理是Spring的一個核心的基礎(chǔ)功能,不
  • “又被陳思誠騙了”

    作者|張思齊 出品|眾面(ID:ZhongMian_ZM)如今的國產(chǎn)懸疑電影,成了陳思誠的天下。最近大爆電影《消失的她》票房突破30億斷層奪魁暑期檔,陳思誠再度風(fēng)頭無兩。你可以說陳思誠的
  • 聯(lián)想的ThinkBook Plus下一版曝光,鍵盤旁邊塞個平板

    ThinkBook Plus 是聯(lián)想的一個特殊筆記本類別,它在封面放入了一塊墨水屏,也給人留下了較為深刻的印象。據(jù)有人爆料,聯(lián)想的下一款 ThinkBook Plus 可能更特殊,它
  • 華為舉行春季智慧辦公新品發(fā)布會 首次推出電子墨水屏平板

    北京時間2月27日晚,華為在巴塞羅那舉行春季智慧辦公新品發(fā)布會,在海外市場推出之前已經(jīng)在中國市場上市的筆記本、平板、激光打印機(jī)等辦公產(chǎn)品,并首次推出搭載
Top