- トップレベルならawaitを使うのにasyncが不要
- クラスにプライベートなメンバが宣言可能に
- クラスに静的メンバが宣言可能に
- at演算子で配列の後ろからのアクセスが簡単に
- hasOwnPropertyを改良したhasOwn
- その他
久しぶりにJavaScriptでの開発を行うことになったので、過去のアップデートを拾ってみました。
ちなみに以下も記載しています。気になる方は目次だけでも眺めてみてください。
トップレベルならawait
を使うのにasync
が不要
- コードのトップレベルならば、わざわざ
async
で関数を作らずにawait
句を直接かけます。
await new Promise((resolve) => { setTimeout(() => { alert("1秒経ちました"); resolve(); }, 1000); });
クラスにプライベートなメンバが宣言可能に
- クラスのメンバの前に
#
をつけることでprivate
にできる。- プライベートなメンバ:クラスの外からアクセスできない。
- 従来のフィールドやメソッドはすべてパブリックだった。
class Counter { #count = 0; countUp() { this.#count++; } count() { return this.#count; } } var counter = new Counter(); counter.countUp(); console.log(counter.count()); console.log(counter.#count); // SyntaxErrorになる
クラスに静的メンバが宣言可能に
static
句で静的メンバが使えるようになった。- 静的メンバとは、クラスをインスタンス化せずとも利用できるメンバのこと。
class Monkey{ static category = "animal" } console.log(Monkey.category); // animal
at
演算子で配列の後ろからのアクセスが簡単に
- 配列や文字列で従来のブラケット[]アクセスの他に、
at
演算子でアクセスが可能となった。
const hoge = ["one", "two", "three"] console.log(hoge.at(1)) // "two" console.log(hoge.at(-1)) // "three" console.log(hoge.at(-2)) // "two" //従来はhoge[hoge.length - 1]としてアクセスしてた
hasOwnProperty
を改良したhasOwn
- あるオブジェクトがあるプロパティを持つかどうか判定するために、
Obejct.property.hasOwnProperty
という記述はとても長いため、そのショートハンドとして、Object.hasOwn
が利用化できるようになった。
const myObject = { name: "鈴木", } console.log(Object.hasOwn(myObject, "name")); // true