-
Notifications
You must be signed in to change notification settings - Fork 42
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #1022 from llqqssttyy/llqqssttyy
25-1μ₯ ν΄λμ€ - κΉλ€μ
- Loading branch information
Showing
1 changed file
with
110 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,110 @@ | ||
# 25μ₯ ν΄λμ€ | ||
|
||
## 1. ν΄λμ€λ νλ‘ν νμ μ λ¬Έλ²μ μ€νμΈκ°? | ||
|
||
μλ°μ€ν¬λ¦½νΈλ νλ‘ν νμ κΈ°λ° κ°μ²΄μ§ν₯ μΈμ΄λ‘ ν΄λμ€κ° νμμλ€. μμ±μ ν¨μμ νλ‘ν νμ μ ν΅ν΄ μμμ ꡬνν μ μκΈ° λλ¬Έμ΄λ€. ννΈ ν΄λμ€ κΈ°λ° μΈμ΄μ μ΅μν νλ‘κ·Έλλ¨Έλ€μκ²λ μ΄κ²μ΄ μ₯λ²½μ΄ λ μ μμΌλ―λ‘ κ·Έλ€μ΄ λ λΉ λ₯΄κ² νμ΅ν μ μλλ‘ ES6μμ μλ‘μ΄ κ°μ²΄ μμ± λ§€μ»€λμ¦μ μ μνλλ°, κ·Έκ²μ΄ λ°λ‘ μλ°μ€ν¬λ¦½νΈμ ν΄λμ€μ΄λ€. λ°λΌμ μλ°μ€ν¬λ¦½νΈμ ν΄λμ€λ λ¬Έλ²μ μ€νμ΄λΌκ³ λ³Ό μλ μλ€. | ||
|
||
νμ§λ§ μμ±μ ν¨μμ ν΄λμ€κ° μ ννκ² λμΌνκ² λμνμ§λ μλλ€. | ||
|
||
1. ν΄λμ€λ₯Ό new μ°μ°μ μμ΄ νΈμΆνλ©΄ μλ¬κ° λ°μνλ€. μμ±μ ν¨μλ new μ°μ°μ μμ΄ νΈμΆνλ©΄ μΌλ° ν¨μλ‘μ νΈμΆλλ€. | ||
2. ν΄λμ€λ extendsμ super ν€μλλ‘ μμμ μ§μνλ€. μμ±μ ν¨μλ ν΄λΉ ν€μλλ₯Ό μ§μνμ§ μλλ€. | ||
3. ν΄λμ€λ νΈμ΄μ€ν μ΄ λ°μνμ§ μλ κ² μ²λΌ λμνλ€. μμ±μ ν¨μλ νΈμ΄μ€ν μ΄ λ°μνλ€. | ||
4. ν΄λμ€ λ΄μ λͺ¨λ μ½λλ μ묡μ μΌλ‘ strict modeκ° μ§μ λλ€. μμ±μ ν¨μλ κ·Έλ μ§ μλ€. | ||
5. ν΄λμ€μ constructor, νλ‘ν νμ λ©μλ, μ μ λ©μλλ λͺ¨λ [[Enumerable]]μ΄ falseλ€. | ||
|
||
μ΄λ¬ν μ°¨μ΄μ λλ¬Έμ ν΄λμ€λ λ¨μν λ¬Έλ²μ μ€νμ΄λΌκΈ° λ³΄λ¨ **μλ‘μ΄ κ°μ²΄ μμ± λ§€μ»€λμ¦**μΌλ‘ 보λ κ²μ΄ ν©λΉνλ€. | ||
|
||
<br/> | ||
|
||
## 2. ν΄λμ€ μ μ | ||
|
||
```js | ||
// ν΄λμ€ μ μΈλ¬Έ | ||
class Person {} | ||
|
||
// μ΅λͺ ν΄λμ€ ννμ | ||
const Person = calss {}; | ||
|
||
// κΈ°λͺ ν΄λμ€ ννμ | ||
const Person = class MyClass {}; | ||
``` | ||
|
||
ν΄λμ€λ₯Ό ννμμΌλ‘ μ μν μ μλ€λ κ²μ ν΄λμ€κ° κ°μΌλ‘ μ¬μ©ν μ μλ μΌκΈ κ°μ²΄λΌλ κ²μ μλ―Ένλ€. | ||
|
||
```js | ||
class Person { | ||
constructor(name) { | ||
this.name = name; | ||
} | ||
|
||
sayHi() { | ||
console.log(`Hi! My name is ${this.name}`); | ||
} | ||
|
||
static sayHello() { | ||
console.log('Hello'); | ||
} | ||
} | ||
``` | ||
|
||
<br/> | ||
|
||
## 3. ν΄λμ€ νΈμ΄μ€ν | ||
|
||
ν΄λμ€ μ μΈλ¬ΈμΌλ‘ μ μν ν΄λμ€λ λ°ν°μ μ΄μ μ λ¨Όμ νκ°λμ΄ ν¨μ κ°μ²΄λ₯Ό μμ±νλ€.(νκ³Ό κ²°κ³Όλ constructor ν¨μμ νλ‘ν νμ μμ΄λ€.) λ¨, **ν΄λμ€λ ν΄λμ€ μ μ μ΄μ μ μ°Έμ‘°ν μ μλ€**. | ||
|
||
κ·Έλ λ€κ³ νΈμ΄μ€ν μ΄ λ°μνμ§ μλ 건 μλλ€. λ€λ§ let, constμ²λΌ μΌμμ μ¬κ°μ§λμ λΉ μ Έ νΈμ΄μ€ν μ΄ λμνμ§ μλ κ²μ²λΌ λμνλ€. | ||
|
||
<br/> | ||
|
||
## 4. μΈμ€ν΄μ€ μμ± | ||
|
||
```js | ||
class Person {} | ||
|
||
// μΈμ€ν΄μ€ μμ± | ||
const me = new Person(); | ||
``` | ||
|
||
## 5. λ©μλ | ||
|
||
ν΄λμ€ μμμ constructor, νλ‘ν νμ λ©μλ, μ μ λ©μλλ₯Ό μ μΈν μ μλ€. | ||
|
||
### 1. constructor | ||
|
||
> μΈμ€ν΄μ€λ₯Ό μμ±νκ³ μ΄κΈ°ννκΈ° μν νΉμν λ©μλ. | ||
constructorμ prototype νλ‘νΌν°κ° κ°λ¦¬ν€λ νλ‘ν νμ κ°μ²΄λ ν΄λμ€ μμ μ΄λ€. constructor λ΄λΆμμ thisλ ν΄λμ€κ° μμ±ν μΈμ€ν΄μ€λ₯Ό κ°λ¦¬ν€κ³ , thisλ₯Ό ν΅ν΄ νλ‘νΌν°λ₯Ό μΆκ°ν μ λ μλ€. | ||
|
||
constructorλ λ€λ₯Έ λ©μλμ ꡬλ³λλ λͺ κ°μ§ νΉμ§μ΄ μλ€. | ||
|
||
- constructorλ λ©μλλ‘ ν΄μλμ§ μκ³ ν΄λμ€κ° νκ°λμ΄ μμ±ν ν¨μ κ°μ²΄ μ½λμ μΌλΆκ° λλ€. | ||
- constructorλ ν΄λμ€ λ΄μ μ΅λ ν κ°λ§ μ‘΄μ¬ν μ μλ€. | ||
- constructorλ μλ΅ κ°λ₯νλ€. μλ΅ν κ²½μ° λΉ constructorκ° μ묡μ μΌλ‘ μ μλκ³ , ν΄λΉ ν΄λμ€λ constructorμ μν΄ λΉ κ°μ²΄λ₯Ό μμ±νλ€. | ||
- constructorλ λ³λμ λ°νλ¬Έμ κ°μ§ μμμΌ νλ€. μ묡μ μΌλ‘ this(μΈμ€ν΄μ€)λ₯Ό λ°ννλ λ‘μ§μ΄ 무μλκΈ° λλ¬Έμ΄λ€. | ||
|
||
### 2. νλ‘ν νμ λ©μλ | ||
|
||
μμ±μ ν¨μμ μν κ°μ²΄ μμ± λ°©μκ³Όλ λ€λ₯΄κ² prototype νλ‘νΌν°μ μΆκ°ν΄μ£Όμ§ μμλ κΈ°λ³Έμ μΌλ‘ νλ‘ν νμ λ©μλκ° λλ€. | ||
|
||
### 3. μ μ λ©μλ | ||
|
||
ν΄λμ€μμλ static ν€μλλ₯Ό λΆμ΄λ©΄ μ μ λ©μλκ° λλ€. μ μ λ©μλλ ν΄λμ€μ λ°μΈλ©λ λ©μλλ‘ ν΄λμ€κ° μμ ν νλ‘νΌν°κ° λμ΄ μΈμ€ν΄μ€λ₯Ό μμ±νμ§ μμλ νΈμΆν μ μλ€. | ||
|
||
### 4. μ μ λ©μλμ νλ‘ν νμ λ©μλμ μ°¨μ΄ | ||
|
||
> π μλ°μ€ν¬λ¦½νΈμ μ μ λ©μλμ νλ‘ν νμ λ©μλλ λͺ κ°μ§ μ°¨μ΄κ° μλ€. | ||
> | ||
> - νΈμΆ λ°©μ: μ μ λ©μλλ μΈμ€ν΄μ€λ₯Ό μμ±νμ§ μκ³ ν΄λμ€ μ΄λ¦μΌλ‘ μ§μ νΈμΆλλ€. | ||
> - μ¬μ© λͺ©μ : μ μ λ©μλλ μΈμ€ν΄μ€μ λ 립μ μΈ κΈ°λ₯μ μ 곡νκ±°λ, ν΄λΉ ν΄λμ€μ κ³ μ ν κΈ°λ₯(ν¬νΌ ν¨μ, μ€μ ν¨μ)μ μ 곡νλ λ° μ¬μ©λλ€. λ°λ©΄ νλ‘ν νμ λ©μλλ μΈμ€ν΄μ€μ λ°μ΄ν°μ μ κ·Όνκ±°λ μ‘°μνλ κΈ°λ₯μ μ 곡νλ λ° μ£Όλ‘ μ¬μ©λλ€. | ||
> - this μ°Έμ‘°: μ μ λ©μλμ thisλ ν΄λμ€ μ체λ₯Ό κ°λ¦¬ν¨λ€. λ°λΌμ μ μ λ©μλ λ΄μμλ ν΄λμ€μ μ μ μμ±μ μ κ·Όν μ μλ€. νλ‘ν νμ λ©μλλ ν΄λΉ λ©μλλ₯Ό νΈμΆν μΈμ€ν΄μ€λ₯Ό κ°λ¦¬ν¨λ€. λ°λΌμ μΈμ€ν΄μ€μ μμ±κ³Ό λ©μλμ μ κ·Όν μ μλ€. | ||
νμ€ λΉνΈμΈ κ°μ²΄μΈ Math, Number, JSON λ±μ λ€μν μ μ λ©μλλ₯Ό κ°μ§κ³ μλ€. μ΄λ€μ μ μ λ©μλλ μ ν리μΌμ΄μ μ μμμ μ¬μ©ν μ μλ μ νΈλ¦¬ν° ν¨μλ‘, μ μ λ©μλμ μ¬μ©μ μμκ° λλ€. | ||
|
||
### 5. ν΄λμ€μμ μ μν λ©μλμ νΉμ§ | ||
|
||
1. function ν€μλλ₯Ό μλ΅ν λ©μλ μΆμ½ ννμ μ¬μ©νλ€. | ||
2. κ°μ²΄ 리ν°λ΄κ³Όλ λ€λ₯΄κ² μ½€λ§κ° νμ μλ€. | ||
3. μ묡μ μΌλ‘ strict modeκ° μ€νλλ€. | ||
4. for ...in λ¬Έμ΄λ Object.keys λ©μλ λ±μΌλ‘ μ΄κ±°ν μ μλ€. | ||
5. λ΄λΆ λ©μλ [[Construct]]λ₯Ό κ°μ§ μλλ€. λ°λΌμ new μ°μ°μμ ν¨κ» νΈμΆν μ μλ€. |