14章メタプログラミング

この章では、JavaScriptの高度な機能をいくつか取り上げます。日常のプログラミングでは一般的には使われませんが、再利用可能なライブラリを記述するプログラマにとっては価値のある話です。また、JavaScriptオブジェクトの振る舞いを変えてみたいと思っている人には興味深い内容のはずです。

ここで説明する機能の多くは、「メタプログラミング」と呼ばれるものです。通常のプログラミングでは、コードを記述してデータを操作します。メタプログラミングの場合は、コードを記述して、ほかのコードを操作します。JavaScriptのような動的な言語では、プログラミングとメタプログラミングの間の線引きははっきりとしません。for/inループを使ってオブジェクトのプロパティを巡回するという単純な機能ですら、もっと静的な言語に慣れたプログラマにとっては「メタ」とみなされるからです。

この章で説明するメタプログラミングの内容は以下の通りです。

  • §14.1:オブジェクトプロパティの列挙可能性、削除可能性、再定義可能性を制御する方法。
  • §14.2:オブジェクトの拡張性を制御したり、「封印された」オブジェクトや「凍結された」オブジェクトを作成する方法。
  • §14.3:オブジェクトのプロトタイプの読み出しや設定方法。
  • §14.4:ウェルノウン(well-known)なSymbolを使って、独自の型の振る舞いを変更する方法。
  • §14.5:テンプレートタグ関数によるDSL(ドメイン固有言語)の作成方法。
  • §14.6reflectメソッドによるオブジェクトの調査方法。
  • §14.7:Proxyによるオブジェクトの振る舞いの制御方法。

14.1 プロパティ属性

JavaScriptのオブジェクトのプロパティは、もちろん、名前や値を持ちます。しかし、このほかにも、プロパティは属性を持ちます。この属性を使ってプロパティの動きを指定します。属性を使ってできることは、以下のようなことです。 ...

Get JavaScript 第7版 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.