만자의 개발일지

[JavaScript] Private Method 와 Field 본문

JavaScript

[JavaScript] Private Method 와 Field

박만자 2022. 3. 16. 19:47

Private Methods and Fields

자바스크립트에서 클래스의 속성들은 기본적으로 Public이기 때문에 클래스 외부에서 접근할 수 있습니다.

하지만 ES2019부터 #prefix 를 추가해 클래스 내부에서 Private하게 메소드와 필드를 선언할 수 있게 되었습니다.

Private한 메소드와 필드는 클래스 내부에서만 불러올 수 있습니다.

class ClassWithPrivateMethodAndField{

    field = 'public field'
    #privateField = 'private field'

    publicMethod() {
        return 'call private method: '+ this.#privateMethod();
    }

    #privateMethod() {
        return this.#privateField
    }

}

let cls = new ClassWithPrivateMethodAndField()
console.log(cls.field)
console.log(cls.publicMethod())
public field
call private method: private field

 

외부에서 접근시 다음과 같은 에러를 반환합니다.

class ClassWithPrivateMethodAndField{

    field = 'public field'
    #privateField = 'private field'

    publicMethod() {
        return 'call private method: '+ this.#privateMethod();
    }

    #privateMethod() {
        return this.#privateField
    }

}

let cls = new ClassWithPrivateMethodAndField()
console.log(cls.privateField)
console.log(cls.privateMethod())
undefined
TypeError: cls.privateMethod is not a function

 

참고

 

'JavaScript' 카테고리의 다른 글

[JavaScript] 클로저(closure)란  (0) 2022.03.17
[JavaScript] 콜백함수(Callback Function)란  (0) 2022.03.17
[JavaScript] 호이스팅이란  (0) 2022.03.16
[JavaScript] for문 정리  (0) 2022.03.16
[JavaScript] 생성자와 프로토타입  (0) 2022.03.15
Comments