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

削除された内容 追加された内容
Ef3 (トーク | 投稿記録)
編集の要約なし
タグ: 2017年版ソースエディター
415 行
:トリッキーですが、staticメソッドからもプライヴェートフィールドを参照でき、staticメソッドの値を使った呼出しでもまたプライヴェートフィールドを参照できます。
 
=== ユーザー定義クラスのインスタンス配列 ===
{{Nav}}
ユーザー定義クラスのインスタンスを配列化けする為には、コンストラクターのパラメータをコレクションにしたものを、イテレーションし Array::map() でコンストラクターに渡すと簡素に表現できます。
 
== 応用例 ==
=== クラスの配列 ===
 
C++ではクラスを使う際、それのインスタンス的なものを配列にして量産するテクニックがあります。
 
果たしてブラウザ用途を主体とするJavaScriptでそういうテクニックが必要かは不明ですが、他言語でもあまりこのテクニックが書かれた書籍が無いので、念のためJavaScriptでクラスのインスタンスを配列にする場合のコードを書いておきます。
 
:<syntaxhighlight lang="javascript">
class drinkDrink {
#name
#price
constructor(name, price) {
this.#name = name;
this.#price = price;
}
toString() {
return `${this.#name}: ${this.#price}`
}
}
 
const drinks = Object.entries({
let dummy = Array() ;
for (i = 0; imilk: < 2;180, i++) {
juice: 150
dummy[i] = new drink;
}).map(pair => new Drink(...pair))
}
drinks.forEach(drink => console.log(String(drink)))
 
dummy[0].name = "milk";
dummy[0].price = 180;
console.log(dummy[0].name);
console.log(dummy[0].price);
console.log("");
 
dummy[1].name = "juice";
dummy[1].price = 150;
console.log(dummy[1].name);
console.log(dummy[1].price);
console.log("");
</syntaxhighlight>
;実行結果:<syntaxhighlight lang="text">
milk: 180
juice: 150
180
 
juice
150
 
</syntaxhighlight>
 
{{Nav}}
そもそも2015年までJavaScritptにはクラスが無かったので(ECMAScript2015でクラス自体が導入された)、2020年代の現代、果たしてこういう用途が多いかどうかの保証はありません。
 
== 脚註 ==