Class

mangorovskiยท2022๋…„ 8์›” 19์ผ
0

Javascript

๋ชฉ๋ก ๋ณด๊ธฐ
6/9

๐Ÿ’ปClass

ํด๋ž˜์Šค ์„ ์–ธ

class Person()

  • ์—ฐ๊ด€์žˆ๋Š” ๋ณ€์ˆ˜์™€ ํ•จ์ˆ˜๋ฅผ ํ•˜๋‚˜๋กœ ๋ฌถ๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค.
  • ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๊ณ  ๋ณ€์ˆ˜์— ๋ฐ์ดํ„ฐ๋ฅผ ๋„˜๊ฒจ์ค€๋‹ค.
  • ๋ฉค๋ฒ„๋ณ€์ˆ˜: ํด๋ž˜์Šค ๋‚ด๋ถ€์— ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋“ค
class Person(){
	name = 'kim'
    age = 30
    heigth = 190
    weight = 100
}

ํด๋ž˜์Šค ์‚ฌ์šฉ

  • ๋ถ•์–ด๋นต ํ‹€ = ํด๋ž˜์Šค / ๋ถ•์–ด๋นต ํ‹€๋กœ ์ฐ์–ด๋‚ธ ๋ถ•์–ด๋นต = ๊ฐ์ฒด(์ธ์Šคํ„ด์Šค)
  • ํด๋ž˜์Šค๋ฅผ ํ†ตํ•œ ๊ฐ์ฒด ์ƒ์„ฑ์€ new ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
  • ๋ฉค๋ฒ„๋ณ€์ˆ˜์— ์ ‘๊ทผํ•˜๋ ค๋ฉด .์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
class Person(){
	name = 'kim'
    age = 30
    heigth = 190
    weight = 100
}
const kim = new Person()
kim.name
kim.age
kim.height
kim.weight

constructor

  • ๊ณ ์ •๋œ ๋ฉค๋ฒ„๋ณ€์ˆ˜๋กœ๋Š” ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์—†๋‹ค.
  • class ๋‚ด๋ถ€์—์„œ Constructor๋Š” ํ•œ ๊ฐœ๋งŒ ์กด์žฌํ•œ๋‹ค.
  • constructor๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์„ ์–ธ๋˜์–ด ์žˆ๋Š” ํ•จ์ˆ˜๋กœ new ํ‚ค์›Œ๋“œ๋ฅผ ํ†ตํ•ด ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ๋งˆ๋‹ค ์‹คํ–‰๋œ๋‹ค.
  • ๊ฐ์ฒด์ƒ์„ฑ์‹œ ๋ฉค๋ฒ„๋ณ€์ˆ˜๋“ค์˜ ์ดˆ๊ธฐ๊ฐ’๋“ค์„ ๋„ฃ์–ด์ฃผ๊ณ  ์‹ถ๋‹ค๋ฉด constructor์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๊ฐ์ฒด ์ƒ์„ฑ์‹œ ๋ฐ›์„ ๊ฐ’๋“ค์„ ์„ ์–ธํ•ด ์ค€๋‹ค.
  • ํ•ด๋‹น ๊ฐ’๋“ค์„ this.๋ฉค๋ฒ„๋ณ€์ˆ˜๋ช…์„ ํ†ตํ•ด ์ ‘๊ทผํ•ด์„œ ๊ฐ’์„ ๋„ฃ์–ด์ค€๋‹ค.
class Person{
    name = 'kim'
    age = 20
    height = 180
    weight = 100

    constructor(name, age, height, weight){
        if(name) this.name = name
        if(age) this.age = age
        if(height) this.height = height
        if(weight) this.weight = weight
    }
}

const lee = new Person('lee', 30, 170, 50)
console.log('lee: ', lee);

const lee = new Person('lee', 30, 170, 50)

  • ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ํด๋ž˜์Šค ๋’ค์˜ ๊ด„ํ˜ธ์•ˆ์— constructor๋กœ ์ „๋‹ฌํ•œ ๋ฐ์ดํ„ฐ๋“ค์„ ๋„ฃ์–ด์ฃผ๋ฉด constructor์— ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋“ค์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

Class ๋ฉ”์„œ๋“œ

  • ๊ธฐ์กด ํ•จ์ˆ˜๋ฅผ ์„ ์–ธํ•  ๋• functionํ‚ค์›Œ๋“œ๊ฐ€ ํ•„์š”ํ–ˆ์ง€๋งŒ ํด๋ž˜์Šค ๋‚ด๋ถ€์—์„œ ์„ ์–ธํ•  ๊ฒฝ์šฐ ๋”ฐ๋กœ function์˜ˆ์•ฝ์–ด ์—†์ด ํ•จ์ˆ˜ ์„ ์–ธ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ํด๋ž˜์Šค ๋‚ด๋ถ€์—์„œ ์„ ์–ธ๋œ ํ•จ์ˆ˜๋ฅผ ๋ฉค๋ฒ„ํ•จ์ˆ˜๋˜๋Š” ๋ฉ”์„œ๋“œ๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.
class Person {
 name = 'kim'
 age = 30
 height = 190
 weight = 100
 
 sayHi() {
 console.log('Hi !!')
 }
}

const kim = new Person()
kim.sayHi()

ํด๋ž˜์Šค ๋ฉค๋ฒ„ํ•จ์ˆ˜์—์„œ ๋ฉค๋ฒ„๋ณ€์ˆ˜ ์ ‘๊ทผ

  • ํด๋ž˜์Šค ๋ฉค๋ฒ„ํ•จ์ˆ˜์—์„œ ๋ฉค๋ฒ„๋ณ€์ˆ˜์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” thisํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
class Person{
    name = 'kim'
    age = 20
    height = 180
    weight = 100

    sayMyName(){
        console.log(this.name)
    }
}
const lee = new Person('lee', 30, 170, 50)
lee.sayMyName() //lee
  • ์—ฌ๊ธฐ์„œ this๋Š” ๊ฐ์ฒด ์ž์‹ ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.
  • this๊ฐ€ ๊ฐ์ฒด ์ž์‹ ์„ ๋งํ•˜๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— this.name์€ ๊ฐ์ฒด ์ž์ฒด์˜ name์„ ๋ถˆ๋Ÿฌ์˜ค๊ฒŒ ๋œ๋‹ค.

ํด๋ž˜์Šค ๋ฉค๋ฒ„ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•œ ๋ฉค๋ฒ„๋ณ€์ˆ˜ ๋ณ€๊ฒฝ

  • ์ƒˆ๋กœ์šด ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋ฐ›๊ณ , ๋ฐ›์€ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋ฉค๋ฒ„๋ณ€์ˆ˜์— ๋„ฃ์–ด์ค€๋‹ค.
class Person{
    name = 'kim'
    age = 20
    height = 180
    weight = 100

    constructor(name,age,height,weight){
        this.name = name
        this.age = age
        this.height = height
        this.weight = weight
    }
    sayMyName(){
        console.log(this.name)
    }
    changeMyage(newAge){
        this.age = newAge
    }
}

const lee = new Person('lee', 30, 170, 50)
const newAge = lee.changeMyage(20)
console.log('lee: ', lee); //{ name: 'lee', age: 20, height: 170, weight: 50 }

ํด๋ž˜์Šค์—์„œ this

class forThisClass{
    showThis(){
        console.log(this)
    }
}
const test = new forThisClass()
test.showThis() //forThisClass
  • ๋ฉ”์„œ๋“œ ๋‚ด๋ถ€์˜ this๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ ๊ฐ์ฒด์— ๋ฐ”์ธ๋”ฉ ๋œ๋‹ค.

[.bind()]

class forThisClass{
    showThis(){
        document.onclick = function(){
            console.log(this)
        }.bind(this)
    }
}
const test = new forThisClass()
test.showThis()
  • ํ•จ์ˆ˜์— this๋ฅผ ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ๋ฐ”์ธ๋”ฉ ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • function.bind()๋Š” ํ•จ์ˆ˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋ฐ”์ธ๋”ฉ ํ•˜๋ ค๋Š” this๋ฅผ ๋ฐ›๋Š”๋‹ค.

ํด๋ž˜์Šค ์ •์  ๋ฉ”์„œ๋“œ

  • prototype์ด ์•„๋‹Œ ํด๋ž˜์Šค ํ•จ์ˆ˜ ์ž์ฒด์—๋„ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ธ์Šคํ„ด์Šค ์—†์ด ํด๋ž˜์Šค์—์„œ ๋ฐ”๋กœ ํ˜ธ์ถœ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  • staticํ‚ค์›Œ๋“œ๋ฅผ ๋ถ™์—ฌ ์„ ์–ธํ•œ๋‹ค.
  • staticMethod๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด this๋Š” ํด๋ž˜์Šค ์ƒ์„ฑ์ž๊ฐ€ ์•„๋‹Œ Person ์ž์ฒด๊ฐ€ ๋œ๋‹ค.
  • ํŠน์ • ๊ฐ์ฒด๊ฐ€ ์•„๋‹Œ ํด๋ž˜์Šค์— ์†ํ•œ ํ•จ์ˆ˜๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ ์ž ํ•  ๋•Œ ์ฃผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค.
  • ์ธ์Šคํ„ด์Šค์— ํ˜ธ์ถœํ•  ์ˆ˜ ์—†๊ณ  ์˜ค์ง ํด๋ž˜์Šค ์ƒ์„ฑ์ž์—์„œ๋งŒ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋‹ค.
class Person{
    constructor(name){
        this.name = name
    }

    static sayHi(){
        console.log(`Hi!`)
    }
}

Person.sayHi() //Hi

ํด๋ž˜์Šค ์ƒ์†๊ณผ ์ƒ์„ฑ์ž ํ•จ์ˆ˜ ์ƒ์†

  • ์ƒ์†์— ์˜ํ•œ ํด๋ž˜์Šค ํ™•์žฅ์€ ๊ธฐ์กด ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›์•„ ์ƒˆ๋กœ์šด ํด๋ž˜์Šค ํ™•์žฅํ•˜์—ฌ ์ •์˜ํ•œ๋‹ค.
  • ์ƒ์„ฑ์žํ•จ์ˆ˜๋Š” ํด๋ž˜์Šค์™€ ๊ฐ™์ด ์ƒ์†์„ ํ†ตํ•ด ๋‹ค๋ฅธ ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋ฅผ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ๋ฒ•์ด ์ œ๊ณต๋˜์ง€ ์•Š๋Š”๋‹ค.
class Animal{
    constructor(age, weight){
        this.age = age
        this.weight = weight
    }

    eat(){ return 'eat' }
    move(){ return 'move' }
}

class Brid extends Animal{
    fly(){return 'fly'}
}

const brid = new Brid(1, 5)
console.log('brid: ', brid);
console.log(brid.eat())
console.log(brid.move())
console.log(brid.fly())
  • ์ƒ์†์„ ํ†ตํ•ด ํ™•์žฅ๋œ ํด๋ž˜์Šค๋ฅผ ์„œ๋ธŒํด๋ž˜์Šค๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

  • ์„œ๋ธŒํด๋ž˜์Šค์— ์ƒ์†๋œ ํด๋ž˜์Šค๋ฅผ ์ˆ˜ํผํด๋ž˜์Šค๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

  • ์„œ๋ธŒํด๋ž˜์Šค๋ฅผ ํŒŒ์ƒํด๋ž˜์Šค ๋˜๋Š” ์ž์‹ํด๋ž˜์Šค๋ผ๊ณ  ๋ถ€๋ฅด๊ธฐ๋„ ํ•œ๋‹ค.

  • ์ˆ˜ํผํด๋ž˜์Šค๋ฅผ ๋ฒ ์ด์Šคํด๋ž˜์Šค ๋˜๋Š” ๋ถ€๋ชจํด๋ž˜์Šค๋ผ๊ณ  ๋ถ€๋ฅด๊ธฐ๋„ ํ•œ๋‹ค.

  • extends ํ‚ค์›Œ๋“œ์˜ ์—ญํ• ์€ ์ˆ˜ํผ ํด๋ž˜์Šค์™€ ์„œ๋ธŒํด๋ž˜์Šค ๊ฐ„์˜ ์ƒ์† ๊ด€๊ณ„๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

  • ํด๋ž˜์Šค๋„ ํ”„๋กœํ† ํƒ€์ž…์„ ํ†ตํ•ด ์ƒ์† ๊ด€๊ณ„๋ฅผ ๊ตฌํ˜„ํ•œ๋‹ค.

profile
๋น„๋‹ˆ๋กœ๊ทธ ์ณŒํ‚จ

0๊ฐœ์˜ ๋Œ“๊ธ€