JavaScriptの7新機能は、2022年に試す必要があります🔥!
16069 ワード
JavaScriptは、2015年以降、すべての更新プログラムは、他よりも素晴らしい更新を得ている.毎回、これらのアップデートが出ている、世界中のプログラマはそれをテストする熱心になる.
だから、すべてのせっかちなプログラマにそこに、今日、私は今年チェックアウトするためのクールな機能の提案の束を持ってきた.これらはステージ4に向かう途中で作られていて、
ソースhttps://medium.com/geekculture/typescript-vs-javascript-e5af7ab5a331
1️⃣ プライベートメソッドとクラスのアクセサー
OHPの(オブジェクト指向プログラミング)データ隠蔽概念を完全に活用するために、この提案はクラス内の任意の要素をプライベートであり、フィールド、メソッド、アクセサー(ゲッター/セッター)とします.したがって、我々は簡単にデータセキュリティに焦点を当てることができます🔒.
2️⃣ トップレベル
はい、我々はそれを使用することができます!Aの宣言なしでモジュールの最上位レベルで
クールじゃない?
今問題が発生
なぜ我々は必要 ✅ いくつかのモジュールには非同期にロードされたデータが含まれているので、モジュールが完全に初期化される前に非同期インポートにアクセスしないようにします. ✅ さらに、非同期モジュールはシステムによって透過的に扱われます. ただし、トップレベルでは、モジュールのインポートの初期化が遅くなります.
3️⃣ プライベートスロットチェック
ご存知ですか.プライベートフィールドには
そこで、オブジェクトがプライベートスロットを持っているかどうかを確認します.
4️⃣
エラーは、実行時異常を診断する素晴らしい方法です.この提案は、これらの実行時不規則性を診断するのにさらに役立つ原因による連鎖エラーの前方の概念をもたらします.
では、現在のエラーを使用して正確なエラーを指定することができます
5️⃣
これは少し面白い!今まで、我々は角ブラケットを使っていました
しかし、このテクニックではなく、負のインデックスを使用する場合はどうですか?
対照的に、配列メソッド.at ()は同じタスクを行いますが、正と負の両方のインデックスをサポートします.したがって、負のインデックスを使用すると、同じ順序で逆の順序でアクセスできます.
これは非常に便利な追加のマッチングオブジェクトです.マッチインデックスはマッチオブジェクトの特徴です.正規表現フラグを使用して有効にする場合
7️⃣ オブジェクト.hasown関数
この提案は
その作業は簡単です!指定したオブジェクトが指定したプロパティを所有している場合、オブジェクト.hasown () staticメソッドはtrueを返します.指定したプロパティが継承されている場合、またはfalseが返されます.
次は何ですか️
さらにいくつかの機能が追加される可能性があります
Twitter
リンケディン
ギタブhttps://github.com/tanmayVaish
hashnode :https://hashnode.com/@tanmayVaish
謝辞 TC39 Page for Finished Proposals exploringjs.com InspiredWebDev で. Codedamn そば v8.dev Top-level 'await' is a footgun そば
だから、すべてのせっかちなプログラマにそこに、今日、私は今年チェックアウトするためのクールな機能の提案の束を持ってきた.これらはステージ4に向かう途中で作られていて、
Standard EcmaScript
おそらく2022年6月まで.ソースhttps://medium.com/geekculture/typescript-vs-javascript-e5af7ab5a331
1️⃣ プライベートメソッドとクラスのアクセサー
OHPの(オブジェクト指向プログラミング)データ隠蔽概念を完全に活用するために、この提案はクラス内の任意の要素をプライベートであり、フィールド、メソッド、アクセサー(ゲッター/セッター)とします.したがって、我々は簡単にデータセキュリティに焦点を当てることができます🔒.
class ButtonToggle extends HTMLElement {
color = 'green';
#value = true;
toggle(){
this.#value = !this.#value;
}
}
const button = new ButtonToggle();
console.log(button.color);
// green - public fields are accessible from outside classes
// SyntaxError: can't be accessed or modified from outside the class
console.log(button.#value);
button.#value = false;
We have used
#
before the field to signify it as a private field.
2️⃣ トップレベル
await
今まで、我々は使用されているawait
演算子のみasync
(非同期)関数.私があなたにあなたが使うことができると言うならばawait
without the async
この機能を持つ機能.はい、我々はそれを使用することができます!Aの宣言なしでモジュールの最上位レベルで
async
.クールじゃない?
const params = new URLSearchParams(location.search);
const language = params.get('lang');
const messages = await import(`./messages-${language}.mjs`); // (A)
console.log(messages.welcome);
The dynamic import in line (A) is almost as convenient as using a normal, static import since we’re using top-level await.
今問題が発生
なぜ我々は必要
await
モジュールのトップレベルで🤔?3️⃣ プライベートスロットチェック
ご存知ですか.プライベートフィールドには
"brand check"
, つまり、インストールされていないオブジェクト内のプライベートフィールドにアクセスしようとすると、例外がスローされます.そこで、オブジェクトがプライベートスロットを持っているかどうかを確認します.
in
演算子を使用します.class Color {
#name;
constructor(name) {
this.#name = name;
}
static check(obj) {
return #name in obj; // (A)
}
}
*上記のコードで、オブジェクトかどうかチェックしますobj
プライベートスロット#name
かどうか.We can use
in
operator to check private fields and methods as well as static fields and methods.
4️⃣
new Error()
方法エラーは、実行時異常を診断する素晴らしい方法です.この提案は、これらの実行時不規則性を診断するのにさらに役立つ原因による連鎖エラーの前方の概念をもたらします.
では、現在のエラーを使用して正確なエラーを指定することができます
new Error
とサブクラス.function readFiles(filePaths) {
return filePaths.map(
(filePath) => {
try {
// ···
} catch (error) {
throw new Error(
`While processing ${filePath}`,
{cause: error}
);
}
});
}
The property
cause
in used to get additional information on the error.
5️⃣
.at()
機能これは少し面白い!今まで、我々は角ブラケットを使っていました
[]
JavaScriptのインデキシング目的のために.しかし、このテクニックではなく、負のインデックスを使用する場合はどうですか?
arr = [1,2,3,4,5]
arr[3] // 4
arr[-1] // (A)
// the code breaks here!
*The code just breaks at line (A)
対照的に、配列メソッド.at ()は同じタスクを行いますが、正と負の両方のインデックスをサポートします.したがって、負のインデックスを使用すると、同じ順序で逆の順序でアクセスできます.
arr.at(-1) // 5
arr.at(-3) // 3
## 6️⃣ regexpマッチインデックスこれは非常に便利な追加のマッチングオブジェクトです.マッチインデックスはマッチオブジェクトの特徴です.正規表現フラグを使用して有効にする場合
/d
, それぞれのグループが捕捉された場所の開始と終了のインデックスを提供します.const fruits = 'Fruits: mango, mangosteen, orange'
const regex = /(mango)/g;
// matchAll
const matches = [...fruits.matchAll(regex)];
matches[0];
[
"mango",
"mango",
index: 8,
input: 'Fruits: mango, mangosteen, orange',
groups: undefined
]
我々が次に何をするつもりであるかについて詳しく見てください.the /mango/g
に変換されます/mango/gd
.// /gd instead of the previous /g
const regex = /(mango)/gd;
const matches = [...fruits.matchAll(regex)];
matches[0];
[
"mango",
"mango",
groups: undefined,
index: 8,
indices:[]
[8, 13],
[8, 13]
]
Just with the addition of a
/d
in the Regex, our match object will provide us with a additional propertyindices
.
7️⃣ オブジェクト.hasown関数
この提案は
Object.hasOwnProperty
, プログラマが直面する不要なハッセルを単純化するその作業は簡単です!指定したオブジェクトが指定したプロパティを所有している場合、オブジェクト.hasown () staticメソッドはtrueを返します.指定したプロパティが継承されている場合、またはfalseが返されます.
let hasOwnProperty = Object.prototype.hasOwnProperty
if (hasOwnProperty.call(object, "foo")) {
console.log("has property foo")
}
これは私たちが今まで書いていたコードです!🔝if (Object.hasOwn(object, "foo")) {
console.log("has property foo")
}
見て、どのくらいコードを簡略化🔝 !! Thus,
Object.hasOwn()
will replaceObject.hasOwnProperty
is year💡!
次は何ですか️
さらにいくつかの機能が追加される可能性があります
EcmaScript 2022
. だから、私の上に従ってください.リンケディン
ギタブhttps://github.com/tanmayVaish
hashnode :https://hashnode.com/@tanmayVaish
謝辞
Reference
この問題について(JavaScriptの7新機能は、2022年に試す必要があります🔥!), 我々は、より多くの情報をここで見つけました https://dev.to/tanmayvaish/7-new-features-in-javascript-you-should-try-in-2022-27boテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol