[JSデフォルト構文]クラスclass
クラス(オブジェクト向け言語)-template
属性(フィールド(データ)と動作(メソッド)が含まれます.
パラメータはコンストラクション関数(constructor:オブジェクトに初期値を入れて必要なデータを渡す)として受信されます.
クラスは、
既存のコンストラクション関数を使用してオブジェクトを作成すると、この形式が表示されます.
1つのクラスから作成されたデータは、別のクラスから継承して使用することもできます.
extends
💡 ここでは、既存のクラス(親)と同じコンストラクション関数をFriendsで作成しますが、コンストラクション関数を作成する必要はなく、親のコンストラクション関数が自動的に呼び出されます.
また、カスタムジェネレータを継承クラスに追加し、既存の親ジェネレータを継承して使用する場合は、
に火をつける
継承されたクラスでは、より多くの新しいメソッドを定義するか、既存の親メソッドを上書きすることで再定義できます.
親メソッド、ジェネレータを呼び出すには
class
は、オブジェクトを生成するためのテンプレートと見なすことができる.属性(フィールド(データ)と動作(メソッド)が含まれます.
パラメータはコンストラクション関数(constructor:オブジェクトに初期値を入れて必要なデータを渡す)として受信されます.
クラスは、
class A{}
のような宣言で宣言してもよいし、変数にクラス式を割り当てることで使用してもよい.const B = class{}
new
ジェネレータを使用してインスタンスを生成できます.既存のコンストラクション関数を使用してオブジェクトを作成すると、この形式が表示されます.
function Person(name, age){
this.name = name;
this.age = age;
}
Person.prototype.getName = function(){
return this.name + '입니다';
}
これを同じクラスに設定すると、プロトタイプとして除外することなく、クラス内でメソッドを指定できます.class Person{
constructor(name,age,location){
//fields
this.name = name;
this.age = age;
this.location = location;
}
//methods
getName(){
return this.name + '입니다';
}
}
これはnewジェネレータを使用してインスタンスオブジェクトを作成および出力した場合の結果です.const me = new Person('jang',10,'Korea');
const you = new Person('kim',20,'China');
console.log(me); //Person { name: 'jang', age: 10, location: 'Korea' }
console.log(you); //Person { name: 'kim', age: 20, location: 'China' }
console.log(me.getName()); //jang입니다
クラスの拡張/継承1つのクラスから作成されたデータは、別のクラスから継承して使用することもできます.
extends
class Child extends Parent
class Animal{
constructor(name, sound){
this.name = name;
this.sound = sound;
}
getInfo(){
console.log(
this.name + '가(이)' + this.sound + '소리를 낸다.'
);
}
}
// 확장
class Friends extends Animal{
constructor(name, sound){
super(name, sound)
}
}
const dog = new Friends('개','멍멍');
const cat = new Friends('고양이','냐옹');
dog.getInfo(); // 개가(이)멍멍소리를 낸다.
cat.getInfo(); // 고양이가(이)냐옹소리를 낸다.
クラスFriendsを使用してdog、catという名前のオブジェクトを作成します.これらのオブジェクトはFriendsの親Animalが持つメソッドにアクセスできます.💡 ここでは、既存のクラス(親)と同じコンストラクション関数をFriendsで作成しますが、コンストラクション関数を作成する必要はなく、親のコンストラクション関数が自動的に呼び出されます.
また、カスタムジェネレータを継承クラスに追加し、既存の親ジェネレータを継承して使用する場合は、
super
というキーワードを使用して親ジェネレータに直接書き込むことができます.に火をつける
継承されたクラスでは、より多くの新しいメソッドを定義するか、既存の親メソッドを上書きすることで再定義できます.
親メソッド、ジェネレータを呼び出すには
super.method()
、super(constructor)
を使用します.class Friends extends Animal{
constructor(name, sound){
super(name, sound) // 부모의 생성자 함수를 호출
}
sleep() {
console.log(this.name + '가(이) 자고 있다.');
}
getInfo(){ // 오버라이딩할 메서드
super.getInfo();
this.sleep();
}
}
const dog = new Friends('개','멍멍');
const cat = new Friends('고양이','냐옹');
dog.sleep(); // 개가(이) 자고 있다.
cat.getInfo(); // 고양이가(이)냐옹소리를 낸다. 고양이가(이) 자고 있다.
Reference
この問題について([JSデフォルト構文]クラスclass), 我々は、より多くの情報をここで見つけました https://velog.io/@rlorxl/JS-기본-문법-클래스classテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol