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

「io19」タグの記事が13件件あります

全てのタグを見る

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

· 約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 がクラスの利用者によって直接使用されないようにするために、アンダースコアのプレフィックスを使用することが多いですが、これは単なる慣例にすぎず、言語によって特に保護されているわけではありません。

`Intl.RelativeTimeFormat`

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

現代のウェブアプリケーションでは、完全な日付やタイムスタンプの代わりに「昨日」「42秒前」「3ヶ月後」といったフレーズを使用することが増えています。このような_相対的な時刻形式の値_は非常に一般的となり、いくつかの人気のあるライブラリがこれをローカライズして形式化するユーティリティ関数を実装しています。(例として、Moment.jsGlobalizedate-fnsがあります。)

BigInt:JavaScriptにおける任意精度整数

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

BigIntはJavaScriptにおける新しい数値プリミティブで、任意精度の整数を表現できます。BigIntを使用すると、Numberで安全な整数制限を超える大きな整数を安全に保存し操作することができます。本記事ではいくつかの使用例を紹介し、JavaScriptのNumberと比較することでChrome 67における新機能を説明します。