戻る

setterとgetter
setterとgetter

[getter]
プロパティの値を取得する関数です。
[setter]
プロパティに値を設定する関数です。

[サンプル]
copy
class A{
	constructor(num1, num2)
	{
		this._num1 = num1;
		this._num2 = num2;
	}
	get num()
	{
		return this._num1 + this._num2;
	}
	set num(num2)
	{
		this._num2 = num2;
	}
}
const cls1 = new A(1, 2);
console.log(cls1.num);//3
cls1.num = 3;
console.log(cls1.num);//4
const cls1 = new A(1, 2);
constructorから受け取った引数の値を各フィールドに設定します。
console.log(cls1.num);
get num()
通常のプロパティのように戻りを受け取ります。
return this._num1 + this._num2;
各フィールドを加算した結果を返しています。
cls1.num = 3;
set num(num2)
プロパティに値を設定します。
this._num2 = num2;
既存のフィールドにプロパティで受け取った引数の値を更新します。

console.log(cls1.num);
setterで更新した結果をgetterを使って確認しています。
更新された結果
this._num1 : 1
this._num2 : 3
1 +3 = 4
がconsole.logの結果として返ります。

[サンプル]
copy
class B{
	constructor(num1, num2)
	{
		this._num1 = num1;
		this._num2 = num2;
	}
	get num()
	{
		return this._num1 + this._num2;
	}
	set num(num2)
	{
		if(Number.isInteger(num2))
		{
			this._num2 = num2;
		}
		else
		{
			console.log("num2 is not integer.");
		}
	}
}
const cls2 = new B(1, 2);
console.log(cls2.num);//3
cls2.num = 1.5;//num2 is not integer.
console.log(cls2.num);//3
cls2.num = "3";//num2 is not integer.
console.log(cls2.num);//3
cls2.num = 5;
console.log(cls2.num);//6
クラスBはsetterにチェックを入れるサンプルです。
例えば、整数のみを設定できるようにするため
このサンプルではsetterで受け取った引数の値を
Number.inIntegerで判定しています。
このようにクラスで必要に応じてチェックをしながらクラスのデータの整合性を保つことができます。

cls2.num = 1.5;//num2 is not integer.
Number.isIntegerにより判定した結果、falseが返ります。

cls2.num = "3";//num2 is not integer.
文字列の3をNumber.isIntegerで判定した結果はfalseになります。

cls2.num = 5;
Number.isIntegerで判定した結果はtrueになります。
this._num1 : 1
this._num2 : 5(引数により設定した値が反映されるため)
1 +5 = 6



戻る


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