Object Review


class vs object
classは、より関連するデータを組み合わせたコンテナです.
has properties and functions. すなわち、フィールド(プロパティ)とメソッド(動作)があります.
すなわちclassは、より関連するデータを整理するフィールドとメソッドを統合した集合である.
時にはFieldsだけを縛っていて、その時はdataclassと呼ばれています.
-template; (フレームワーク:このようなデータが入ってくるかもしれません!)やるだけ.
-declare once; 宣言だけで
-no data in;
object:classを使用してobjectにデータを入れて作成します!
-instance of a class
-created many times
-data in
Classはオブジェクトを作成するフレームワークとして使用することをお勧めします.
how to decalre a class?
例)
class Person{
	constructor(name, age) { // fields
  this.name = name;
  this.age = age;
	}
	speak() {
  	console.log(`${this.name}: hello!`);
  }
}
Has fields (name & age) and a method called 'speak'.
Declaring object;
1.新しいオブジェクトを作成するときにnewキーを使用します.
const josh = new Person('joshua', 27);
josh.speak(); >> speak関数を呼び出します.
  • getter & setter;
    it is incapsulation; making a property private so that other people cannot change it?
    コーヒーマシン自動販売機プログラムの例)cande-make-1 cup of coffee.getter and setter will prevent others' mistakes typing wrong/inappropriate input?
    get&setキーワードを使用します.
  • get age() { //get 키워드를 이용해서 값을 리턴할 수 있다. 
    	return this.age;
    }
    set age(value) { //set 키워드를 이용해서 값을 설정할 수 있다. 
    	this.age = value; // set은 값을 설정하기 때문에 value를 받아와야한다. 
    }
    ageのgetterを定義する瞬間thisageメモリからageを読み込むのではなくgetterを呼び出します.
    setterを定義する瞬間age = age; 値を割り当てると、メモリに値を割り当てるのではなくsetterが呼び出されます.=>call stack error.
    in order to prevent such error, use different names for the variables in getter&setter. 次は正しい例です.
    ```
    set age(value){
    if (value < 0) {
    throw Error('age cannot be negative!');
    }
    this._age = value; 
    or this._age = value < 0 ? 0: value; // 이게 제일 깔끔한 표현식.
    }
    ```
    Public & Private:
    ジェネレータを使用しないでフィールドを定義できます.定義、public、#の前にprivateを付けるだけです.
    private=classの値は、表示可能、アクセス可能、変更可能ですが、外部から読み込んだり変更したりすることはできません.出力時はUndefindです.
    継承と多様性