Global 객체의 특성

> 글로벌 객체 (Global Object) 는 DOM 구조 내에서 아래와 같은 특징을 갖는다.

 

  • 단 하나만 유일하게 존재하며 어떠한 컨텍스트가 실행 이전에 먼저 생성된다.
    • 컨텍스트 실행 이전에 글로벌객체가 먼저 생성된다는 이유로
      무분별한 글로벌 객체 선언이 로드 퍼포먼스에 영향을 주지 않을까 하여 찾아본 결과,
      퍼포먼스 영향에 대한 부분은 함수 내에서의 로컬변수 선언에 대한 글이 더 많았다.
       
         1) 속도에 미약하게 영향은 줄 수 있으니 글로벌 변수를 되도록 로컬 변수로 선언하기
         2) 스크립트 영역의 오염 (독립적이지 않는 변수의 충돌 등) 을 막기 위해 되도록 사용하지 않기

 

  • 글로벌 객체는 내부적으로 생성자가 없으며 new 생성자로 이용할 수 없다. 
    • 해당 이유는 추가적으로 확인해 봐야겠다.

 

  • 글로벌 객체는 내부적으로 함수가 없으며, 글로벌 객체를 함수로 호출할 수 없다.
    • new 생성자로 이용할 수 없는 이유와 연관이 있는 것 같으나 추가적인 확인이 필요하다.

 

  • 글로벌 객체의 prototype 은 구현 방법에 따라 달라질 수 있다.

 

  • 글로벌 객체는 DOM 환경에서 window 속성을 가지고 있으며, 이것이 글로벌 객체 자체를 나타낸다.
    • 이 이유로 글로벌 객체로 선언한 값을 window 객체 내에서 찾아볼 수 있다.

 

 

 

Global 객체 재정의 방법

> 글로벌 객체 선언 후, window 객체 내의 hasOwnProperty() 메소드로 객체를 재정의할 수 있다.

<script>
	var testObject = true;
    window.hasOwnProperty("testObject") = false;
</script>

 

 

 

Global 객체 포함, 효율적인 변수 선언법

> 변수는 함수 시작 전에 하나의 자료형으로 묶어서 표현해야 한다.

 

  • 초기화 시의 실수 최소화
  • 변수를 선언한 스코프에서 사용하고 있는 변수에 대한 관리용이
  • minify 최적화

BEFORE 

<script>
	function testFn(flag) {
    	if(flag) {
        	...
            var testObj1, testObj2, testObj3 = null;
			...
        }else {
        	...
        	var testObj4 = null;
            ...
        }
    }
</script>

 

AFTER

 

<script>
	function testFn(flag) {
    	//함수 시작 시 모든 변수를 자료형에 묶어서 정의
    	var testObj1, testObj2, testObj3, testObj4 = null;
    	if(flag) {
        	...
            testObj1 = ...
			...
        }else {
        	...
        	testObj4 = ...
            ...
        }
    }
</script>

>

간단한 코드 입력 시에는 비효율적인 방식일 수 있다.

그러나 코드의 양이 방대하고 복잡한 경우

느슨한 타입 (loosely type), 동적언어의 특성을 가진 자바스크립트의 변수를 한데 묶어 정의하면
  1) 초기화의 실수를 막을 수 있고,

변수가 선언된 스코프 진행 시 변수를 한번에 초기화 하는 이점으로 
  2) 변수의 관리가 용이 하며,

방대한 js 파일을 min 파일 변환 시에 묶어서 선언한 변수가 한데 나열되어 있으므로
  3) minify 에 최적화할 수 있다.

 

 

도움을 주신 글입니다. 감사합니다.

> 참고URLhttps://pjh3749.tistory.com/132

 

자바스크립트 window객체와 효율적인 변수 선언법

자바스크립트는 브라우저 환경에서 돌아가도록 만들어졌다. 그래서 글로벌 영역을 다른 언어와는 조금 다르게 구현하고 있다. 그래서 조금 다른 개념이 들어가 있다. 글로벌 영역도 하나의 변수로 정의한다. 글로..

pjh3749.tistory.com

 

+ Recent posts