摘要:特性概述整理自,歸納于筆者的現(xiàn)代開發(fā)語法基礎(chǔ)與實踐技巧系列文章中也歡迎關(guān)注前端每周清單系列獲得一手資訊。本部分則介紹了新的構(gòu)造器與包含靜態(tài)方法的命名空間對象。
ECMAScript 2017(ES8)FeaturesECMAScript 2017(ES8)特性概述 整理自 ES8 was Released and here are its Main New Features,歸納于筆者的現(xiàn)代 JavaScript 開發(fā):語法基礎(chǔ)與實踐技巧系列文章中;也歡迎關(guān)注前端每周清單系列獲得一手資訊。
ECMAScript 2017 或 ES8 與 2017 年六月底由 TC39 正式發(fā)布,可以在這里瀏覽完整的版本;而 ES8 中代表性的特征包括了字符串填充、對象值遍歷、對象的屬性描述符獲取、 函數(shù)參數(shù)列表與調(diào)用中的尾部逗號、異步函數(shù)、共享內(nèi)存與原子操作等。
字符串填充ES8 中添加了內(nèi)置的字符串填充函數(shù),分別為 padStart 與 padEnd,該函數(shù)能夠通過填充字符串的首部或者尾部來保證字符串達到固定的長度;開發(fā)者可以指定填充的字符串或者使用默認的空格,函數(shù)的聲明如下:
str.padStart(targetLength [, padString]) str.padEnd(targetLength [, padString])
如上所示,函數(shù)的首個參數(shù)為目標長度,即最終生成的字符串長度;第二個參數(shù)即是指定的填充字符串:
"es8".padStart(2); // "es8" "es8".padStart(5); // " es8" "es8".padStart(6, "woof"); // "wooes8" "es8".padStart(14, "wow"); // "wowwowwowwoes8" "es8".padStart(7, "0"); // "0000es8" "es8".padEnd(2); // "es8" "es8".padEnd(5); // "es8 " "es8".padEnd(6, "woof"); // "es8woo" "es8".padEnd(14, "wow"); // "es8wowwowwowwo" "es8".padEnd(7, "6"); // "es86666"對象指遍歷
Object.values 函數(shù)會返回指定對象的可枚舉的屬性值數(shù)組,數(shù)組中值順序與 for-in 循環(huán)保持一致,函數(shù)的聲明為:
Object.values(obj)
首個參數(shù) obj 即為需要遍歷的目標對象,它可以為某個對象或者數(shù)組(數(shù)組可以看做鍵為下標的對象):
const obj = { x: "xxx", y: 1 }; Object.values(obj); // ["xxx", 1] const obj = ["e", "s", "8"]; // same as { 0: "e", 1: "s", 2: "8" }; Object.values(obj); // ["e", "s", "8"] // when we use numeric keys, the values returned in a numerical // order according to the keys const obj = { 10: "xxx", 1: "yyy", 3: "zzz" }; Object.values(obj); // ["yyy", "zzz", "xxx"] Object.values("es8"); // ["e", "s", "8"]
而 Object.entries 方法則會將某個對象的可枚舉屬性與值按照二維數(shù)組的方式返回,數(shù)組中順序與 Object.values 保持一致,該函數(shù)的聲明與使用為:
const obj = { x: "xxx", y: 1 }; Object.entries(obj); // [["x", "xxx"], ["y", 1]] const obj = ["e", "s", "8"]; Object.entries(obj); // [["0", "e"], ["1", "s"], ["2", "8"]] const obj = { 10: "xxx", 1: "yyy", 3: "zzz" }; Object.entries(obj); // [["1", "yyy"], ["3", "zzz"], ["10": "xxx"]] Object.entries("es8"); // [["0", "e"], ["1", "s"], ["2", "8"]]對象的屬性描述符獲取
getOwnPropertyDescriptors 函數(shù)會返回指定對象的某個指定屬性的描述符;該屬性必須是對象自己定義而不是繼承自原型鏈,函數(shù)的聲明為:
Object.getOwnPropertyDescriptor(obj, prop)
obj 即為源對象,而 prop 即為需要查看的屬性名;結(jié)果中包含的鍵可能有 configurable、enumerable、writable、get、set 以及 value。
const obj = { get es8() { return 888; } }; Object.getOwnPropertyDescriptor(obj, "es8"); // { // configurable: true, // enumerable: true, // get: function es8(){}, //the getter function // set: undefined // }函數(shù)參數(shù)列表與調(diào)用中的尾部逗號
該特性允許我們在定義或者調(diào)用函數(shù)時添加尾部逗號而不報錯:
function es8(var1, var2, var3,) { // ... } es8(10, 20, 30,);異步函數(shù)
ES8 中允許使用 async/await 語法來定義與執(zhí)行異步函數(shù),async 關(guān)鍵字會返回某個 AsyncFunction 對象;在內(nèi)部實現(xiàn)中雖然異步函數(shù)與迭代器的實現(xiàn)原理類似,但是其并不會被轉(zhuǎn)化為迭代器函數(shù):
function fetchTextByPromise() { return new Promise(resolve => { setTimeout(() => { resolve("es8"); }, 2000); }); } async function sayHello() { const externalFetchedText = await fetchTextByPromise(); console.log(`Hello, ${externalFetchedText}`); // Hello, es8 } sayHello(); console.log(1); sayHello(); console.log(2); // 調(diào)用結(jié)果 1 // immediately 2 // immediately Hello, es8 // after 2 seconds共享內(nèi)存與原子操作
共享內(nèi)存允許多個線程并發(fā)讀寫數(shù)據(jù),而原子操作則能夠進行并發(fā)控制,確保多個存在競爭關(guān)系的線程順序執(zhí)行。本部分則介紹了新的構(gòu)造器 SharedArrayBuffer 與包含靜態(tài)方法的命名空間對象 Atomics。Atomic 對象類似于 Math,我們無法直接創(chuàng)建其實例,而只能使用其提供的靜態(tài)方法:
add /sub - 增加或者減去某個位置的某個值
and / or /xor - 進行位操作
load - 獲取值
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/87100.html
摘要:距離上一篇走馬觀花已經(jīng)快兩年時間了,上個月底正式發(fā)布,再寫一篇姊妹篇,介紹新特性。會議的每一項決議必須大部分人贊同,并且沒有人強烈反對才可以通過。已經(jīng)準備就緒,該特性會出現(xiàn)在年度發(fā)布的規(guī)范之中。 距離上一篇《ES6 走馬觀花》已經(jīng)快兩年時間了,上個月底 ES8 正式發(fā)布,再寫一篇姊妹篇,介紹 ES8 新特性。 什么是 ES8 ES8 是 ECMA-262 標準第 8 版的簡稱,從 ES...
摘要:新特性我們大家都知道從開始組織每年都發(fā)布一些新的標準,今天也不例外,組織在今年也發(fā)布了的語法引入了規(guī)范功能引入了字符串補全長度的功能。如果某個字符串不夠指定長度,會在頭部或尾部補全。 ES8新特性ECMAScript2017 我們大家都知道從es6開始ECMA組織每年都發(fā)布一些新的標準,今天也不例外,ECMA組織在今年也發(fā)布了es7的語法 padStart()/padEnd() es2...
摘要:定期召開會議,會議由會員公司的代表與特邀專家出席。新版本將會包含每年截止時間之前完成的所有特性。它引入了一個新的構(gòu)造函數(shù)和具有輔助函數(shù)的命名空間對象。 導言:ECMAScript的演化不會停止,但是我們完全沒必要害怕。除了ES6這個史無前例的版本帶來了海量的信息和知識點以外,之后每年一發(fā)的版本都僅僅帶有少量的增量更新,一年更新的東西花半個小時就能搞懂了,完全沒必要畏懼。本文將帶您花大約...
摘要:特性概述比較新特性更多。之后后分篇描述目前已經(jīng)比較成熟的語法特性例如和。同上,但返回該元素的索引號。和對象的屬性行為一致。不將參數(shù)強制轉(zhuǎn)行為。判斷是否為在范圍內(nèi)的正整數(shù)。不少層面的特性可以通過進行兼容性支持。 原文: http://pij.robinqu.me/JavaScript_Core/ECMAScript/es6/es6_api_extension.html 源...
摘要:第二種接口的概念和面向?qū)ο缶幊滔嚓P(guān)接口視為一份合約,在合約里可以定義這份合約的類或接口的行為接口告訴類,它需要實現(xiàn)一個叫做的方法,并且該方法接收一個參數(shù)。 定場詩 八月中秋白露,路上行人凄涼; 小橋流水桂花香,日夜千思萬想。 心中不得寧靜,清早覽罷文章, 十年寒苦在書房,方顯才高志廣。 前言 洛伊安妮·格羅納女士所著的《學習JavaScript數(shù)據(jù)結(jié)構(gòu)與算法》第三版于2019年的5月份...
閱讀 2106·2021-11-05 09:42
閱讀 2851·2021-09-23 11:21
閱讀 2841·2019-08-30 14:00
閱讀 3314·2019-08-30 13:15
閱讀 465·2019-08-29 17:18
閱讀 3547·2019-08-29 16:29
閱讀 2749·2019-08-29 14:06
閱讀 2794·2019-08-23 14:41