Front-end/JavaScript

[JavaScript ES6]전역객체

윤민_ 2021. 11. 1. 23:50

✨전역객체란?

전역 객체 object 는 전역 범위 global scope(en-US) 에 항상 존재하는 객체를 의미합니다.

 

자바스크립트에는 전역 객체로 선언된 객체들이 항상 존재합니다.

웹브라우저에서 스크립트가 전역 변수를 생성할 때, 전역 객체의 멤버로서 생성됩니다. ( Node.js 에서는 예외.)

전역 객체의 interface 는 스크립트가 실행되고 있는 곳의 실행 컨텍스트에 의존합니다. 

 

웹브라우저에 있는 스크립트가 특별히 백그라운드 작업으로 시작하지 않는 코드들은 그것의 전역 객체로써 Window 를 가집니다. 이것은 Web에 있는 자바스크립트 코드의 상당수가 그렇습니다.

 

window 객체는 브라우저에서 전역 객체입니다. 

어느 전역 객체나 함수는  window 객체의 프로퍼티로서 접근될 수 있습니다.

 

❗전역 변수 접근

let foo = "foobar"; 
foo === window.foo; // Returns: true Copy to Clipboard

전역 객체로 foo 변수를  선언한 뒤, 우리는 foo 변수명을 사용해 전역 객체인 window.foo 의

프로퍼티로  window 객체에서 그것의 값에 직접 접근할 수 있습니다.

전역 객체 foo 는 window 객체에 아래와 같이 저장됩니다:

foo: "foobar"

❗전역 함수 접근

function greeting() {
   console.log("Hi!");
}

window.greeting(); // It is the same as the normal invoking: greeting();

위의 예는 window 객체의 프로퍼티로서 어떻게 전역 함수가 저장되는지를 보여주고 있습니다 . 우리가 greeting 을 전역 함수로써 호출하면 내부적으로는 window 객체를 사용해 호출됨을 보여주고 있습니다.

 

전역 함수 greeting 은 아래와 같이 window 객체에 저장됩니다:

greeting: function greeting() {
   console.log("Hi!");
}

 

[출처]MDN Web Docs

 


전역객체(Global object)는 특수한 객체다. 모든 객체는 이 전역객체의 프로퍼티이다. 하단의 코드를 보며 이해해보자

function func(){
  console.log("Hello");
}
func();

window.func();
//window=객체 , func= 속성 (메소드)

객체 window 없이 func();만을 입력해도 내부적으로 widndow를 붙인거와 같이 동작한다. 

즉, 같은 출력을 뽑아낸다.

이를 암시적으로 윈도우를 사용한다고 표현하는데, 

암시적이란 것은 생략하였을때 기본적으로 무엇이 사용된다는 뜻이다.

func();와 window.func();는 모두 실행이 된다.

모든 전역변수와 함수는 사실 window 객체의 프로퍼티다.

객체를 명시하지 않으면 암시적으로 window의 프로퍼티로 간주된다. 

let o ={'func':function(){}
  console.log("Hello");}
}
o.func();
window.o.func();

즉, 자바스크립트에서 모든 객체는 기본적으로 전역객체의 프로퍼티임을 알 수 있다.

 

📢전역객체 API

 

Global - 생활코딩

특정한 객체에 속하지 않는 함수와 속성들

opentutorials.org

ECMAScript에서는 전역객체의 API를 정의해두었다.

그 외의 API는 호스트 환경에서 필요에 따라서 추가로 정의하고 있다.

이를테면 웹브라우저 자바스크립트에서는 alert()이라는 전역객체의 메소드가 존재하지만

node.js에는 존재하지 않는다. 또한 전역객체의 이름도 호스트환경에 따라서 다른데,

웹브라우저에서 전역객체는 window이지만 node.js에서는 global이다. 

 

생활 코딩 자바스크립트 사전에서 Global구간에 정의 되어있는 것들은 전역객체가 가지고 있는 API들이다.

 

[출처]생활코딩