中間クラス-コンストラクション関数


1.クラス
1)コンストラクタ
下図に示すように、オブジェクトデータとメソッドのみを使用すると、毎回メモリに割り当てられ、コード作成効率が低下します.
const orosy = {
  firstName: 'Orosy',
  lastName: 'Kim',
  getFullName: function () {
    return `${this.firstName} ${this.lastName}`
  }
}
console.log(orosy.getFullName()) // 값: Orosy Kim

const amy = {
  firstName: 'Amy',
  lastName: 'Clarke',
  getFullName: function () {
    return `${this.firstName} ${this.lastName}`
  }
}
console.log(amy.getFullName()) // 값: Amy Clarke

const neo = {
  firstName: 'Neo',
  lastName: 'Smith',
  getFullName: function () {
    return `${this.firstName} ${this.lastName}`
  }
}
console.log(neo.getFullName()) // 값: Neo Smith
このような低効率符号化を解決する方法は関数を構築することである.
これは「文字方式」ではなく、少し複雑な方式です.
コンストラクション関数の使用例
function User(first, last) {
  this.firstName = first,
  this.lastName = last
}
User.prototype.getFullName = function () {
  return `${this.firstName} ${this.lastName}`
}
// getFullName 메소드는 로직이 동일하기 때문에 통일화하여 메모리 효율적 관리 가능!
// user라는 함수에 숨어있는 prototype 속성에 getFullName을 할당하면 된다

const orosy = new User('Orosy','Kim')
// User가 생성자 함수이며, 무엇이 생성되느냐? 바로 객체 데이터
const amy = new User('Amy', 'Clarke')
const neo = new User('Neo', 'Smith')
// 인스턴스: new라는 키워드를 통해 생성자 함수로 실행한 결과를 반환하여 할당된 변수
// 여기서 '인스턴스'들은 orosy, amy, neo!

console.log(orosy) // 값: user {firstName: "Orosy", lastName: "Kim"}
console.log(orosy.getFullName()) // 값: Orosy Kim
console.log(amy.getFullName()) // 값: Amy Clarke
console.log(neo.getFullName()) // 값: Neo Smith
// 위의 메소드들은 user.prototype.getFullName이란 한 번 만들어진 함수를 '참조'하는 것
文学の仕方?
割り当て演算子(=)を使用してカッコを開いたり閉じたりするように、特定の記号を使用してデータを簡単に作成できます.
「」、「」、{}、[]などはすべて文字方式です!
const orosy = {}
また、一般的な関数と比較するために、開発者たちはPascalCaseを使って頭文字の大文字を暗黙的に使っています!