본문 바로가기
시작/TIL(Today I Learned)

230111 - JavaScript - 정적메서드와 접근제어자 Private, Sequelize

by 백씨네 2023. 1. 11.

오늘 내가 배운 것

1. 정적 메서드 'static'

2. 접근 제어자 'Private'

3. sequelize를 이용한 테이블 만들기

 

1. 정적 메서드 'static'

 

정적 메서드는 클래스 선언 안에 있고, 앞에 'static'이라는 키워드가 붙는다.

static staticmethod(){}

 

기본 사용 예시

class User {
    static staticmethod() {
        console.log(this === User)
    }
}

User.staticmethod() // true 출력

// 정적 메서드는 인스턴스화 되면 호출할 수 없다.
const user = new User()
user.staticmethod() // Error

 

정적메서드 사용 및 주의사항

정적메서드는 인스턴스 생성 후에 사용할 수 없다.

 

class Math {
    static square(x) {
        return x * x
    }
}
console.log(Math.square(2)) // 4

 

객체를 생성할 필요 없이, 클래스명.메서드명 형식으로 정적메서드를 호출할 수 있다.

 

Math 클래스를 아래 코드를 이용해서  인스턴스화 할 수 있다.

 

const math = new Math()

 

math라는 객체가 생성되었으며, 이 객체는 클래스의 프로퍼티와 메서드를 사용할 수 있다
하지만, Math 클래스는 정적 메서드만 정의되어 있기 때문에 인스턴스를 생성하면 아무것도 할 수 없다.
정적메서드를 사용하기 위해서는 클래스명.메서드명 을 사용해야 한다.... Math.square()

 

console.log(math.squar(2)) // Error

객체로 만든 math를 이용하여 정적메서드를 호출하게 되면, 에러를 발생한다.

에러가 발생하는 이유는 math라는 객체는 Math 클래스를 인스턴스화해서 생성되었으며,
이 클래스에는 square라는 메서드가 정의되어 있지 않다.

 

 

 

 

2. 접근 제어자 'Private'

 

 

클래스 내부에서 프로퍼티나, 메서드에 '#'을 붙이면 클래스 외부에서 액세스 할 수 없는 상태로 선언할 수 있다.

 

기본 사용 예시

//ex 1

class MyClass {
    #privateProperty = "value"

    #privateMethod() {
        // code
    }
}

 

 

private 사용하기

//ex

class MyClass {
    #privateProperty = 180

    privateMethod() {
        console.log(this.#privateProperty + "cm")
    }
}
const instance = new MyClass()
instance.privateMethod() // 180cm
console.log(instance.#privateProperty) // Error

 

에러 발생 이유는 privateProperty는 프라이빗 식별자를 포함하기 때문에 "MyClass" 클래스 외부에서 엑세스 할 수 없다

 

 

 

 

3. sequelize를 이용한 테이블 만들기

 

sequelize를 이용한 테이블 만들기

자세한 코드는 깃허브를 확인해 주세요.

 

Github

https://github.com/100space/202301/tree/main/230111-2

 

 

GitHub - 100space/202301

Contribute to 100space/202301 development by creating an account on GitHub.

github.com

 

 

 

User Table

 

Comment Table

 


 

 

댓글