21章オブジェクトのプロパティに関する詳細
オブジェクトのプロパティに関しては、「9章 オブジェクトとオブジェクト指向プログラミング」などで基本的な事柄を説明してきましたが、JavaScriptではプロパティに関してさらに細かな操作や制御の機構が用意されています。アクセッサプロパティ、ディスクリプタ、オブジェクトの保護、それにES2015で新たに加わったプロキシといった事柄について見ていきましょう。
21.1 ゲッターとセッター
オブジェクトのプロパティで一般的なのは、名前(キー)と値のペアからなる「データプロパティ」ですが、このほかに「9章 オブジェクトとオブジェクト指向プログラミング」で例をあげた「アクセッサプロパティ」という種類のプロパティがあります。
アクセッサプロパティは関数(メソッド)とプロパティの機能を併せもつような存在です。「ゲッター」と「セッター」の2つがあり、定義するときは関数のように定義するのですがデータプロパティのような役目をします。
例をあげて説明しましょう。User
というクラスがあり、メールアドレスを記憶しているとします(話を単純にするために、ここでは「@
を含む文字列」ならばメールアドレスとして有効であることにします)。外部からメールアドレスを直接書き換えられたりしないように、プロパティemail
を直接読み書きするのではなく、setEmail
とgetEmail
という2つのメソッドを用意します。そして新しいシンボルを生成してメールアドレスを記憶するためのプロパティとします(email
とか_email
とかいった文字列のプロパティを使うと、直接アクセスできてしまいます)。
const ...
Get 初めてのJavaScript 第3版 ―ES2015以降の最新ウェブ開発 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.