πŸ“Œ Language/Javascript

[JS] Static,Protected,Private에 λŒ€ν•΄ μ•Œμ•„λ³΄κΈ°

Fomagran πŸ’» 2022. 2. 15. 04:05
728x90
λ°˜μ‘ν˜•

μ•ˆλ…•ν•˜μ„Έμš” FomaπŸ’» μž…λ‹ˆλ‹€!

 

μ˜€λŠ˜λ„ λͺ¨λ˜ μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œ 배운 Static,Protected,Private 에 λŒ€ν•΄ μ œκ°€ μ΄ν•΄ν•œ 것을 λ°”νƒ•μœΌλ‘œ

 

정리해 보렀고 ν•©λ‹ˆλ‹€!

 

λ°”λ‘œ μ‹œμž‘ν• κ²Œμš”~


Static

 

Static은 μ •μ μ΄λΌλŠ” 의미λ₯Ό κ°€μ§€κ³  μžˆμ–΄, λ³€ν•˜μ§€ μ•ŠλŠ”λ‹€λŠ” λœ»μ΄λ‹€.

 

이것을 μ΄μš©ν•˜μ—¬ 정적 λ©”μ„œλ“œ, ν”„λ‘œνΌν‹°λ₯Ό λ§Œλ“€ 수 μžˆλ‹€.

 

μ‰½κ²Œ λ§ν•˜λ©΄ ν΄λž˜μŠ€μ—μ„œ κ³΅ν†΅μ μœΌλ‘œ κ°€μ§€κ³  μžˆλŠ” λΆ€λΆ„μ΄λ‚˜ κΈ°λŠ₯을 미리 μ •μ˜ν•΄ λ†“λŠ” 것이닀.

 

Static Property 

 

class Person {
    //λͺ¨λ“  μ‚¬λžŒμ΄ λ™μΌν•˜κ²Œ κ°€μ§€κ³  있고 λ³€ν•˜μ§€ μ•ŠλŠ” κ°’
    static planet = "지ꡬ"
}
//클래슀 μžμ²΄μ—μ„œ λ°”λ‘œ 읽기 κ°€λŠ₯
console.log(Person.planet) //지ꡬ

 

Static Method

 

class User {
    constructor(name,createDate) {
        this.name = name
        this.createDate = createDate
    }
    //λͺ¨λ“  μœ μ €κ°€ λ™μΌν•˜κ²Œ κ°€μ§€κ³  있고 λ³€ν•˜μ§€ μ•ŠλŠ” κΈ°λŠ₯
    static sayHi() {
        console.log("Hi")
    }
    static compare(user1,user2) {
        return user1.createDate - user2.createDate
    }
}
//클래슀 μžμ²΄μ—μ„œ ν˜ΈμΆœκ°€λŠ₯
User.sayHi() //Hi

let users = [
    new User("Foma",new Date(2021,1,1)),
    new User("Gran",new Date(2020,1,1)),
    new User("Young",new Date(2022,1,1))
]
//μ•„λž˜μ™€ 같이 정적 λ©”μ„œλ“œλ₯Ό ν™œμš©ν•  수 있음
console.log(users.sort(User.compare))
/*
[
  User { name: 'Gran', createDate: 2020-02-01T06:00:00.000Z },
  User { name: 'Foma', createDate: 2021-02-01T06:00:00.000Z },
  User { name: 'Young', createDate: 2022-02-01T06:00:00.000Z }
]
*/

//μƒˆλ‘œμš΄ 클래슀λ₯Ό λ§Œλ“€ λ•Œλ„ μœ μš©ν•¨
User.createTodayNewUser = function() {
    return new this("Foma",new Date())
}

Protected

 

ProtectedλŠ” ν΄λž˜μŠ€μ™€ 클래슀의 μžμ‹κΉŒμ§€ ν—ˆμš© κ°€λŠ₯ν•˜κ²Œ ν•˜λŠ” ν‚€μ›Œλ“œμ΄λ‹€.

 

μž‘μ„±ν•˜λŠ” 방식은 이름 μ•žμ— '_'λ₯Ό 뢙이고 μž‘μ„±ν•œλ‹€.

 

_waterAmount = 0
_plusWaterAmount1() {...}

 

ν•˜μ§€λ§Œ JavaScript λ¬Έλ²•μ μœΌλ‘œ μ§€μ •ν•œ 것은 μ•„λ‹ˆκΈ° λ•Œλ¬Έμ— λͺ¨λ‘ 호좜이 λœλ‹€.

 

κ°•μ œν•œ 사항이 μ•„λ‹ˆλ©° ν”„λ‘œκ·Έλž˜λ¨Έλ“€ μ‚¬μ΄μ—μ„œ μ•½μ†μœΌλ‘œ '_'이 μžˆλ‹€λ©΄ μ™ΈλΆ€ 접근이 λΆˆκ°€λŠ₯ ν•˜λ‹€κ³  μ—¬κΈ΄λ‹€.

 

console.log(a._waterAmount) //0
a._plusWaterAmount1() //waterAmount + 1
console.log(a._waterAmount) //1

Private

 

PrivateλŠ” 클래슀 λ‚΄λΆ€μ—μ„œλ§Œ ν—ˆμš© κ°€λŠ₯ν•˜κ²Œ ν•˜λŠ” ν‚€μ›Œλ“œμ΄λ‹€.

 

μž‘μ„±ν•˜λŠ” 방식은 이름 μ•žμ— '#'을 뢙이고 μž‘μ„±ν•œλ‹€.

 

#waterAmount = 0
#plusWaterAmount1() { ... }

 

Protectedμ™€λŠ” λ‹€λ₯΄κ²Œ PrivateλŠ” λ¬Έλ²•μ μœΌλ‘œ κ°•μ œν•˜κΈ° λ•Œλ¬Έμ— μ™ΈλΆ€μ—μ„œ ν˜ΈμΆœν•˜κ²Œ 되면 Errorκ°€ λ°œμƒν•œλ‹€.

 

a.#plusWaterAmount() //Error
console.log(a.#waterAmount) //Error

Reference

 

 

The Modern JavaScript Tutorial

We want to make this open-source project available for people all around the world. Help to translate the content of this tutorial to your language!

javascript.info

 

728x90
λ°˜μ‘ν˜•