「JavaScript/クラス」の版間の差分

削除された内容 追加された内容
Ef3 (トーク | 投稿記録)
→‎クラス: 外部リンク
タグ: 2017年版ソースエディター
Ef3 (トーク | 投稿記録)
→‎アクセサプロパティ: 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) {