[Javascript] Class


Class


過去にclassがなかった場合、複数の同類オブジェクトを作成する必要がある場合は、new functionを使用してジェネレータを作成します.ただし、es 6に導入されたclass構文を使用して、オブジェクト向けプログラムで使用される機能を使用できるようになりました.

基本構文

function User(name,age){
	this.name=name;
    this.age=age;
}

let kim = new User('kim','20'); // 생성자함수
let lee = new User('lee','23');
console.log(kim);
console.log(lee);
functionを使用してコンストラクション関数を作成および出力すると、Kim,Leeのオブジェクトが出力されます.複数のkim、lee関数を作成する必要がなく、1つの関数として定義し、必要に応じて関数に値を入力して出力するため、非常に簡潔に使用できます.
class User{
	constructor(name,age){
    	this.name = name;
    	this.age = age;
    }
    say(){
    	console.log(`${this.name}입니다`)
    }
}

let kim = new User('kim','20'); // 생성자함수
let lee = new User('lee','23');
console.log(kim);
console.log(lee);
let user = new User('park','11');
User.say();
1番目の2番目のコンソール出力は、1番目の関数を使用するときに出力されるオブジェクトと同じです.
3番目のsay()出力では、class User {...}構文が次のように動作します.
1.Userという名前の関数を構築します.
2.関数本文はconstructorメソッドによってインポートされ、constructorがない場合、本文は空です.(consturtornewによって自動的に呼び出される)
3.say()をクラス内で定義する方法をUser.prototypeに格納する.

getter, setter

class User{
	constructor(name,age){
    	this.name = name;
    	this.age = age;
    }
    say(){
    	console.log(`${this.name}입니다`);
    }
    
    get age(){ //get이 정의되면 age는 get으로 감
        return this._age;
    }
    
    set age(value){
        if (value < 0){
            return console.log("error");            
        }
        this._age=value;
    }
}
let lee = new User('lee','-1');
console.log(lee);
コードを記述する場合はage値が0より大きい必要がありますが、ユーザーがうっかり0より小さい値を入力した場合は、直接出力できます.このような事態を防ぐためにgetter,setterを用いる.ageと入力されると、直ちに保存するのではなく、get関数によって鍵が_ageに戻される.set関数は値を受け入れ、_ageとして格納します.
ただし、ageは0より大きくなければならないので、条件文を使用して、入力した値が0より小さい場合はerrorを出力します.

エラーを確認して先に出力し、出力電力を-1減算