포시코딩

외부에서 class로의 접근 본문

Node.js

외부에서 class로의 접근

포시 2022. 10. 20. 16:31
728x90

UserStorage.js

'use strict';

class UserStorage {
    users = {
        id: ['test', 'test2', 'test3'], 
        psword: ['1234', '1234', '1234'], 
    };
}

module.exports = UserStorage;

UserStorage 라는 class가 있을 때

외부에서 users 라는 field 에 접근하기 위해 다음과 같이 사용할 수 있다.

 

1. 인스턴스 사용

const UserStorage = require('경로');

const userStorage = new UserStorage();
console.log(userStorage.users);

2. class 자체에서 접근하기

const UserStorage = require('경로');

console.log(UserStorage.users);

대신 2번처럼 class 자체에서 users field에 접근하려면

users에 static을 붙여줘야 한다.

'use strict';

class UserStorage {
    static users = {
        id: ['test', 'test2', 'test3'], 
        psword: ['1234', '1234', '1234'], 
    };
}

module.exports = UserStorage;

하지만 다른 외부 파일에서 내부 데이터에 접근할 수 없어야 하는게 정상이다. 

때문에 우리는 아래와 같이 users를 은닉화(private) 해줘야 한다. 

'use strict';

class UserStorage {
    static #users = {
        id: ['test', 'test2', 'test3'], 
        psword: ['1234', '1234', '1234'], 
    };
}

module.exports = UserStorage;

 

이럴경우 어떻게 users 변수를 가져올 수 있을까?

UserStorage 내부에 users를 리턴하는 메서드를 만들어 사용하면 된다.

'use strict';

class UserStorage {
    static #users = {
        id: ['test', 'test2', 'test3'], 
        psword: ['1234', '1234', '1234'], 
    };
    
    static getUsers() {
        return this.#users;
    };
}

module.exports = UserStorage;

getUsers() 도 마찬가지로 클래스 외부에서 접근하므로 static을 붙여줘야한다. 

728x90