-
자바스크립트의 전역 객체(Global object)프론트엔드/JavaScript 2020. 9. 14. 01:45
<body> <script> var name = "철수"; // 전역 변수 name 선언 function call(name){ // 전역 함수 call 선언 console.log(name); } console.log(name); // "철수" 출력 call("철수"); // "철수" 출력 </script> </body>위와 같은 예시를 보면 전역 변수, 전역 함수를 선언하고 실행까지 하는 것을 볼 수 있다.
일반적으로 함수명, 변수명을 이용하면 해당 함수와 변수에 설정된 데이터를 이용할 수 있다.
그렇다면 다음은 어떨까?
<body> <script> var name = "철수"; // 전역 변수 "철수" 선언 function call(name){ // 전역 함수 "call" 선언 console.log(name); } console.log(window.name); // "철수" 출력 window.call("철수"); // "철수" 출력 </script> </body>변수와 함수를 호출할 때 앞에 window라는 단어가 붙었다. 그러나 실행은 똑같이 된다.
이게 무슨 뜻일까? 자세히 보면 그것을 알 수 있다.
<body> <script> let name = { // 리터럴 객체 name 생성 a: "철수", b: "영희" } console.log(name.a); // "철수" 출력 console.log(name.b); // "영희" 출력 </script> </body>우리는 지금까지 객체를 만들고 그 안에 프로퍼티를 불러올 때 점 ( . )을 찍었던 것을 기억할 것이다.
위의 예시를 봐도 그렇다.
즉 함수나 변수를 점을 찍어서 불러올 수 있다는 것은 window의 정체는 객체란 것을 알 수 있다.
window란 자바스크립트가 브라우저에서 돌아갈 때 모든 객체들의 최상위 객체로서 전역객체라(Global Object)라고도 부른다.
전역객체는 눈에 보이지 않고 우리가 설정해주지 않았다.
그리고 각종 함수, 변수를 호출할 때 window란 것이 생략되어있다.
하지만 이는 사용상의 편의를 위한 것으로 실제로는 엄연히 존재하고 있는 객체다.
우리가 별도로 만들지 않았고 호출하지 않았음에도 자바스크립트에서 우리가 설정하는 전역 함수, 전역 변수는 모두 이 전역 객체의 프로퍼티로서 설정되는 것이다.
그리고 이러한 전역 객체를 자바스크립트 코드 상에선 window로 표기하고 있다.
그리고 다른 언어에선 window 이외에도 다른 명칭으로 지칭한다.
하지만 결국 둘은 같은 전역 객체다.
'프론트엔드 > JavaScript' 카테고리의 다른 글
자바스크립트의 상속 (inheritance) (0) 2020.09.14 자바스크립트 this의 정의 (0) 2020.09.14 자바 스크립트의 객체(Object) (0) 2020.09.11 자바 스크립트의 클래스(class)와 객체(Object) 활용 (0) 2020.09.11 자바와 자바스크립트 클래스와 오브젝트 (0) 2020.09.11