πŸ“† λ‚ μ§œ

2023/12/14(λͺ©)

πŸ“š 챕터

ν΄λž˜μŠ€μ™€ ν•¨μˆ˜μ˜ 관계


πŸ‘¨πŸ»β€πŸ’» ν•™μŠ΅ λ‚΄μš©

🎯 ν΄λž˜μŠ€μ™€ ν•¨μˆ˜μ˜ 관계

ν΄λž˜μŠ€λŠ” ES6μ—μ„œ λ‚˜μ˜¨ κ°œλ…μœΌλ‘œ,ES6 μ΄μ „μ—λŠ” ν”„λ‘œν† νƒ€μž…μ„ ν™œμš©ν•΄
클래슀의 μž‘λ™ 방식을 λ™μΌν•˜κ²Œ κ΅¬ν˜„ν•  수 μžˆμ—ˆλ‹€.
ν΄λž˜μŠ€κ°€ μž‘λ™ν•˜λŠ” 방식은 μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ ν”„λ‘œν† νƒ€μž…μ„ ν™œμš©ν•˜λŠ” 것이라고 λ³Ό 수 μžˆλ‹€.클래슀의 μ½”λ“œλ₯Ό 바벨 μ—μ„œ νŠΈλžœμŠ€νŒŒμΌν•˜λ©΄ 클래슀 μž‘λ™μ„ μƒμ„±μž ν•¨μˆ˜λ‘œ
맀우 μœ μ‚¬ν•˜κ²Œ μž¬ν˜„ν•  수 μžˆλ‹€.
즉, ν΄λž˜μŠ€λŠ” 객체지ν–₯ μ–Έμ–΄λ₯Ό μ‚¬μš©ν•˜λ˜ λ‹€λ₯Έ ν”„λ‘œκ·Έλž˜λ¨Έκ°€ μ’€ 더 μžλ°”μŠ€ν¬λ¦½νŠΈ 에 μ ‘κ·Όν•˜κΈ° μ‰½κ²Œ λ§Œλ“€μ–΄μ£ΌλŠ”, μΌμ’…μ˜ 문법적 섀탕(Syntacic sugar)의 역할을 ν•œλ‹€κ³  λ³Ό 수 μžˆλ‹€.λ˜ν•œ μžλ°”μŠ€ν¬λ¦½νŠΈ ν΄λž˜μŠ€κ°€ ν”„λ‘œν† νƒ€μž…μ„ 기반으둜 μž‘λ™ν•œλ‹€. μ•„λž˜ μ˜ˆμ œμ½”λ“œλŠ” 클래슀의 μ½”λ“œλ₯Ό λ°”λ²¨μ—μ„œ μƒμ„±μž ν•¨μˆ˜λ‘œ λ³€ν™˜ν•œ μ½”λ“œλ‹€.

<script>

class Car {
  constructor(name) {
    this.name = name
  }

  honk() {
    console.log(`${this.name}이 경적을 μšΈλ¦½λ‹ˆλ‹€!`)
  }

  static hello() {
    console.log('μ €λŠ” μžλ™μ°¨μž…λ‹ˆλ‹€')
  }

  set age(value) {
    this.carAge = value
  }

  get age() {
    return this.carAge
  }
}
'use strict'

//ν΄λž˜μŠ€κ°€ ν•¨μˆ˜μ²˜λŸΌ ν˜ΈμΆœλ˜λŠ” 것을 λ°©μ§€
function _classCallCheck(instance, Constructor) { 
if (!(instance instanceof Constructor)) { 
throw new TypeError("Cannot call a class as a function"); 
  } 
}


// ν”„λ‘œνΌν‹°λ₯Ό ν• λ‹Ήν•˜λŠ” μ½”λ“œ
function _defineProperties(target, props) { 
for (var i = 0; i < props.length; i++) { 
var descriptor = props[i]
descriptor.enumerable = descriptor.enumerable || false
descriptor.configurable = true
if ("value" in descriptor) descriptor.writable = true
Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor)
 } 
}

// ν”„λ‘œν† νƒ€μž… λ©”μ„œλ“œμ™€ 정적 λ©”μ„œλ“œλ₯Ό μ„ μ–Έν•˜λŠ” μ½”λ“œ
function _createClass(Constructor, protoProps, staticProps) { 
if (protoProps) _defineProperties(Constructor.prototype, protoProps) 
if (staticProps) _defineProperties(Constructor, staticProps) 
Object.defineProperty(Constructor, "prototype", { writable: false }) 
return Constructor 
}

var Car = /*#__PURE__*/function () {
  function Car(name) {
    _classCallCheck(this, Car);
    this.name = name;
  }
  _createClass(Car, [{
    key: "honk",
    value: function honk() {
      console.log("".concat(this.name, "\uC774 \uACBD\uC801\uC744 \uC6B8\uB9BD\uB2C8\uB2E4!"));
    }
  }, {
    key: "age",
    get: function get() {
      return this.carAge;
    },
    set: function set(value) {
      this.carAge = value;
    }
  }], [{
    key: "hello",
    value: function hello() {
      console.log('μ €λŠ” μžλ™μ°¨μž…λ‹ˆλ‹€');
    }
  }]);
  return Car;
}();

</script>

🎯 클래슀 챕터 정리

ν΄λž˜μŠ€λŠ” 객체λ₯Ό μƒμ„±ν•˜κΈ° μœ„ν•΄ 도움이 λ˜λŠ” μ—¬λŸ¬ κΈ°λŠ₯을 μ œκ³΅ν•˜κ³  μžˆλ‹€.
λ¦¬μ•‘νŠΈμ˜ λ§Žμ€ μ½”λ“œλ“€μ΄ ν΄λž˜μŠ€ν˜• μ»΄ν¬λ„ŒνŠΈλ‘œ μƒμ„±λμœΌλ―€λ‘œ 클래슀λ₯Ό μ΄ν•΄ν•˜κ³  λ‚˜λ©΄ ν΄λž˜μŠ€ν˜• μ»΄ν¬λ„ŒνŠΈμ— μ–΄λ–»κ²Œ 생λͺ…μ£ΌκΈ°λ₯Ό κ΅¬ν˜„ν•  수 μžˆλŠ”μ§€, μ™œ ν΄λž˜μŠ€ν˜• μ»΄ν¬λ„ŒνŠΈ 생성을 μœ„ν•΄ React.Componentλ‚˜ React.PureComponentλ₯Ό μƒμ†ν•˜λŠ”μ§€,λ©”μ„œλ“œκ°€ ν™”μ‚΄ν‘œ ν•¨μˆ˜μ™€ 일반 ν•¨μˆ˜μΌ λ•Œ μ–΄λ–€ 차이가 μžˆλŠ”μ§€ 등을 이해할 수 μžˆμ„κ²ƒμ΄λ‹€.

➑️ λ‹€μŒ κΈ€ μ—μ„œλŠ” ν΄λ‘œμ €μ— λŒ€ν•΄ μ‚΄νŽ΄λ³΄μž.

profile
β˜„οΈ

0개의 λŒ“κΈ€