keepup-ECMAScript
  • About
  • Proposal
    • using
    • Temporal
  • ES2025
    • Promise.try
    • Sync Iterator helpers
    • Import Attributes
    • JSON Modules
    • New Set Methods
    • RegExp Modifiers
    • Duplicate named capture groups
  • ES2024
    • Resizable and growable ArrayBuffers
    • RegExp v flag with set notation + properties of strings
    • Atomics.waitAsync
    • Well-Formed Unicode Strings
    • array grouping
    • Promise withResolvers
  • ES2023
    • Symbols as WeakMap key
    • Hashbang Grammar
    • Array.findLast, findLastIndex
    • 配列の非破壊操作
  • ES2022
    • Private class fields
    • Regexp match indices
    • Top-level await
    • Private fields in-in
    • Array.at
    • Object.hasOwn
    • Class static block
    • Error cause
GitBook提供
このページ内
GitHubで編集
  1. ES2022

Private class fields

前へES2022次へRegexp match indices

最終更新 1 年前

CtrlK
  • Example
  • Link

完全にカプセル化されたプライベートフィールド・プライベートメソッドが宣言できるようになった。

TypeScriptのprivateアクセサを使った場合、トランスパイル後のJavaScriptではむき出しのフィールド・メソッドに変換され、privateはTypeScriptで開発している時だけの保護機能として存在する(ソフトプライベート)。

新しく提案された「Private class fields」はJavaScript上でもカプセル化を実現できるため、完全な保護機能を持つ(ハードプライベート)。

Example

プライベートフィールド・プライベートメソッドを宣言した例。

class Foo {
  #value = 1;
  #fetch() {}
}

const foo = new Foo();

foo.#value; // Error!
foo.#fetch(); // Error!

staticブロックも導入された。クラスが評価される時に一度だけ実行されるブロックで、外部からリソースを取得し自身のフィールドを初期化する時などに使える。

class Foo {
  static x;
  static y;
  static {
    this.x = this.y;
  }
}

Link

JavaScript classes: Private class fields | Can I use... Support tables for HTML5, CSS3, etc
GitHub - tc39/proposal-class-fields: Orthogonally-informed combination of public and private fields proposalsGitHub
プライベートクラス機能 - JavaScript | MDN
Logo
Logo
Logo