メインコンテンツまでスキップ

「Node.js 14」タグの記事が4件件あります

全てのタグを見る

`Intl.DisplayNames`

· 約5分
Shu-yu Guo ([@_shu](https://twitter.com/_shu)) と Frank Yung-Fong Tang

全世界のユーザーに届くWebアプリケーションは、多くの異なる言語で言語名、地域名、スクリプト名、通貨名を表示する必要があります。それらの名称の翻訳にはデータが必要であり、そのデータはUnicode CLDRで利用可能です。これらのデータをアプリケーションの一部としてパッケージングすることは開発者の時間を費やすことにつながります。ユーザーは言語名や地域名の翻訳において一貫性を好む傾向があり、世界の地政学的動向に合わせてそのデータを更新するには、絶え間ないメンテナンスが必要です。

トップレベルの`await`

· 約6分
Myles Borins ([@MylesBorins](https://twitter.com/MylesBorins))

トップレベルのawaitは、開発者が非同期関数の外部でawaitキーワードを使用できるようにします。それは、他のモジュールがそれらをimportする際に、モジュールのボディを評価する前に待機する大きな非同期関数のように動作します。

弱い参照とファイナライザ

· 約13分
Sathya Gunasekaran ([@_gsathya](https://twitter.com/_gsathya)), Mathias Bynens ([@mathias](https://twitter.com/mathias)), Shu-yu Guo ([@_shu](https://twitter.com/_shu)), and Leszek Swirski ([@leszekswirski](https://twitter.com/leszekswirski))

一般的に、JavaScriptではオブジェクトへの参照は_強く保持されており_、オブジェクトへの参照がある限り、ガベージコレクションされることはありません。

const ref = { x: 42, y: 51 };
// `ref`(または同じオブジェクトへの他の参照)にアクセスできる限り、
// オブジェクトはガベージコレクションされません。

現在のところ、WeakMapWeakSetはJavaScriptでオブジェクトを弱参照する唯一の方法です:WeakMapWeakSetにキーとしてオブジェクトを追加しても、ガベージコレクションを妨げることはありません。

const wm = new WeakMap();
{
const ref = {};
const metaData = 'foo';
wm.set(ref, metaData);
wm.get(ref);
// → metaData
}
// このブロックスコープ内で`ref`への参照が無くなったため、
// オブジェクトはガベージコレクションされます。
// ただし、それが`wm`のキーである場合でも、`wm`へのアクセスは可能です。

公開および非公開のクラスフィールド

· 約5分
Mathias Bynens ([@mathias](https://twitter.com/mathias))

いくつかの提案が既存のJavaScriptクラス構文を新機能で拡張しています。この記事では、V8 v7.2およびChrome 72で導入された新しい公開クラスフィールド構文と、近日公開予定の非公開クラスフィールド構文について説明します。

以下は、IncreasingCounterという名前のクラスのインスタンスを作成するコード例です:

const counter = new IncreasingCounter();
counter.value;
// ログに'現在の値を取得中!'と出力
// → 0
counter.increment();
counter.value;
// ログに'現在の値を取得中!'と出力
// → 1

注意: value にアクセスすると、結果を返す前にコード(メッセージをログに出力する)が実行されます。さて、このクラスをJavaScriptでどのように実装しますか?🤔

ES2015のクラス構文

以下は、ES2015のクラス構文を使用してIncreasingCounterを実装する方法です:

class IncreasingCounter {
constructor() {
this._count = 0;
}
get value() {
console.log('現在の値を取得中!');
return this._count;
}
increment() {
this._count++;
}
}

このクラスでは、valueゲッターとincrementメソッドをプロトタイプに追加しています。さらに興味深いのは、_count というインスタンスプロパティを作成し、そのデフォルト値を0に設定するコンストラクタが含まれていることです。現在は、_count がクラスの利用者によって直接使用されないようにするために、アンダースコアのプレフィックスを使用することが多いですが、これは単なる慣例にすぎず、言語によって特に保護されているわけではありません。