質問: new_height; } } ```
回答: **JavaScriptにおいては**、通常のプロパティすべてをゲッター/セッターで実装することは不要であると考えています。 まず、get/setが必要になる理由、つまり、ゲッター/セッターの利点を考えてください。通常のプロパティと違ってゲッター/セッターを使用した場合に次のようなことが可能になります。 * 読み込みのみ、または、書き込みのみのプロパティを作れる。 * 読み込み時、または、書き込み時に追加の操作を行える。例えば、読み込み回数をカウントするなど。 * 他のプロパティから自動生成される値の場合は、必要になるまでその自動生成の計算を遅延できる。 * プロパティの読み込みや書き込みについて、全く異なる処理に書き換えできる。(このような動作は非推奨) 他にもあるかも知れませんが、よく採用されるのは最初の一つぐらいで、それ以外は希だと思っています。 上のようなことをしなくてはならない事情が無く、単純にget/setを使って通常のプロパティと同じ動作になるように実装した場合、通常のプロパティと何ら変わることはありません。そのようなときは、通常のプロパティで十分でしょう。 で、問題は、通常のプロパティとして実装していたが、プロパティの読み書きについて、上のようなゲッター/セッター特有の処理を後から追加したくなったという場合です。通常のプロパティをゲッター/セッターに置き換えることは簡単にできるでしょう。このとき重要なのは、既にそのプロパティへの読み書きが書いてある他の部分について**書き換える必要が無い**ということです。他の部分から見てそれがゲッター/セッターを使った物なのかプロパティへの単純なアクセスなのかの区別はありません。どちらも同じように書いて、同じようにアクセスできます。ですので、書き換えは不要です。また、JavaScriptはコンパイルするわけではありませんから、コンパイルし直しなんてものが発生するはずがありません。 つまり、将来の保険のため、という行為自体が全くの無駄になります。なので、JavaScriptでは特段の理由がない限りゲッター/セッターを使用する意味が無いと考えています。 これが他の言語、特に似たような名前のJavaにおいては、アクセス方法が変わって他の部分を全て書き直す必要が出てくるため、ゲッター/セッターで初めから書いたほうがよいという場合があります。ゲッター/セッターがどのようになっているかは言語によって全く異なるため、それぞれの言語での事情を鑑みる必要があるでしょう。