KDOC 681: JavaScriptのクラスは関数なので定義したあとにプロパティを追加できる

この文書のステータス

  • 作成
    • 2026-10-17 貴島
  • レビュー
    • 2026-10-17 貴島

概要

JavaScriptのクラスは特別な関数で、関数はオブジェクトである。そのため、定義したあとのクラスにもふつうのオブジェクトと同じようにプロパティを追加できる。追加したプロパティはクラス自身に付き、 static で定義したものと同じくインスタンスからは見えない。

クラスは実際には「特別な関数」であり、(後略)

クラス - MDN

class MyClass {}
MyClass.key = "value";
console.log(typeof MyClass, MyClass.key);
console.log(new MyClass().key);
function value
undefined

typeof が function を返すのは、クラスが [[Call]] を持つオブジェクトだからである。

If val has a [[Call]] internal slot, return “function”.

ECMAScript 2025 Language Specification 13.5.3.1

関連

なし。