戻る

クラスフィールド
public / private / static

クラスフィールドとは、クラスに直接プロパティ(データ)を宣言して
初期化するための構文です。
クラス定義のスコープ内でプロパティ名を宣言できます。
初期化は=で値を設定してください。

[パブリックフィールド]
クラス外部からもアクセス可能なプロパティです。

[プライベートフィールド]
#(ハッシュ)をプロパティ名の前に付けます。
クラス外部からはアクセスできません。

[スターティックフィールド]
インスタンス化しないで参照可能なプロパティです。

[サンプル]
copy
class A{
	addResult = 0;
	constructor(num1)
	{
		this.num1 = num1;
	}
	add(num2)
	{
		this.addResult = this.num1 + num2;
	}
	#minusResult = 0;
	minus(num2)
	{
		this.#minusResult = this.num1 - num2;
		console.log(this.#minusResult);
	}
}
const cls1 = new A(10);
console.log(cls1.num1);//10
cls1.add(5);//15
console.log(cls1.addResult);
cls1.minus(5);//5
console.log(cls1.minusResult);//undefined
クラスAには
(1) addResult = 0;
(2) #minusResult = 0;
を宣言しています。
(1)はpublicフィールド
(2)はprivateフィールド
です。

const cls1 = new A(10);
constructorで引数の値をthis.num1クラスフィールドに設定します。
このthis.num1はpublicフィールドとなるため、
インスタンス化したオブジェクトを介して使用可能です。

cls1.add(5);//15

this.addResult = this.num1 + num2;
publicフィールドのaddResultに
this.num1 : 10
num2 : 5(引数)
this.addResult = 10 + 5 = 15;

cls1.minus(5);//5
this.#minusResult = this.num1 - num2;
privateフィールドのminusResultに
this.num1 : 10
num2 : 5(引数)
this.#minusResult= 10 - 5 = 10;

cls1.minusResult
privateフィールドにはアクセスできないためundefinedが返ります。


[サンプル]
copy
class B{
	static num1 = 2;
	static #num2 = 3;
	static add (num)
	{
		return this.num1 + this.#num2 + num;
	}
}
console.log(B.num1);//2
console.log(B.add(5));//10
console.log(B.num2);//undefined
staticフィールドはクラスをインスタンス化したオブジェクトを使用しなくても
そのまま使用できます。

console.log(B.num1);//2
クラス.フィールドによりフィールドを取得できます。

console.log(B.add(5));//10
staticメソッドを実行した例です。
return this.num1 + this.#num2 + num;
this.num1 : 2(staticフィールド)
this.#num2 : 3(private staticフィールド)
num : 5(引数)
2 + 3 + 5 = 10

console.log(B.num2);//undefined
クラスのprivateフィールドではアクセスでいないため
undefinedが返ります。



戻る


著作権情報
ホームページおよプリ等に掲載されている情報等については、いかなる保障もいたしません。
ホームページおよびアプリ等を通じて入手したいかなる情報も複製、販売、出版または使用させたり、
または公開したりすることはできません。
当方は、ホームペーよびアプリ利用したいかなる理由によっての障害等が発生しても、
その結果ホームページおよびアプリ等を利用された本人または他の第三者が被った損害について
一切の責任を負わないものとします。