「JavaScript/クラス」の版間の差分
削除された内容 追加された内容
→クラス: 外部リンク タグ: 2017年版ソースエディター |
→アクセサプロパティ: https://paiza.io/projects/BUjHE0rSBTH_IUDobE_s9g?language=javascript タグ: 2017年版ソースエディター |
||
273 行
=== アクセサプロパティ ===
クラスを導入した動機の1つがカプセル化でしたが、そのクラスのインスタンスのプロパティにダイレクトにアクセスしたのでは本末転倒です(クラスの内部構造が変わったら、プロパティを参照するコードを全て変更するはめになります)。
そこでプロパティアクセス(obj.propやobj[propString]によるアクセス)をオーバーライドする
アクセサプロパティは、実際には存在しないプロパティが存在しているかのように見せる仕掛けです<ref>[https://tc39.es/ecma262/#sec-method-definitions ECMA-262::15.4 Method Definitions]</ref>。
{{See also|JavaScript/オブジェクト#アクセサプロパティ}}
[[#ES6 の class を使ったコードと相当するES5のコード]]のES6の例を題材にアクセサプロパティを定義してみます。
;[https://paiza.io/projects/BUjHE0rSBTH_IUDobE_s9g?language=javascript アクセサプロパティの使用例]:<syntaxhighlight lang="javascript" highlight="3,5-8" line>
class Complex {
constructor(real = 0, imag = 0) {
|