다들 static
을 많이 사용해봤을것 같다
우선적으로 static
을 사용하는것 과 인스턴스
차이로는 무엇일까???
인스턴스
class Test {
....
function method_test() {
....
}
}
const test = new Test();
test.method_test();
static
class Test{
static function method_test(){
....
}
}
Test.method_test()
인스턴스
는 객체를 생성한후에 메서드와 멤버변수를 호출하는 반면에
static
은 클래스이름. 이런식으로 바로 호출을 할수가 있다.
어째서 그런걸까 ??
객체를 생성해서 멤버변수 라던지 메소드를 호출하는 경우
객체가 생성되어야 값이 초기화가 되고 메모리에 올라가게 됩니다.
즉 객체를 생성하기 전에는 메소드라던지 멤버변수라던지 어디에도 존재하지 않고
만들어지는 순간 멤버변수와 메소드가 메모리 어딘가에 존재하게 됩니다.
반면에 ,
static
이 붙은 변수 및 클래스는 프로그램 실행 시 메모리에 자동으로 생성이 된다.
- 프로그램 시작시 메모리가 할당되기때문에 , 한번도 사용하지 않는 전역변수를 할당할 수도 있다 그렇기때문에 전역변수 보다는 싱글톤 클래스의 멤버변수로 만드는 방법을 권장한다.
- 전역 이라는 것은 곳 어디서든 접근이 가능하다는 것이므로, 내가 의도하지 않았는데 값이 들어갔을 경우 추적이 힘들다.
- static 은 사용하는순간 바로 메모리에 할당되기에 , 초기에 바로 가져다가 사용해야할 경우 static 을 사용하게 되면 좋다