[내장 객체] - 전역 객체

Donggu(oo)·2023년 1월 11일
0

JavaScript

목록 보기
31/49
post-thumbnail

1. 전역 객체


  • 전역 객체는 코드가 실행되기 이전 단계에 자바스크립트 엔진에 의해 어떤 객체보다도 먼저 생성되는 특수한 객체이며, 어떤 객체에도 속하지 않은 최상위 객체이다.

  • 전역 객체는 개발자가 의도적으로 생성할 수 없다. 즉, 전역 객체를 생성할 수 있는 생성자 함수가 제공되지 않는다.

  • 전역 객체는 표준 내장 객체(Object, String, Number, Boolean, Function, Array 등)와 환경에 따른 호스트 객체(클라이언트 Web API 또는 Node.js의 호스트 API), 그리고 var 키워드로 선언한 전역 변수를 프로퍼티로 갖는다.

  • 전역 객체의 프로퍼티를 참조할 때 window 또는 global을 생략할 수 있다.

// 문자열 'F'를 16진수로 해석하여 16진수로 변환하여 반환한다.
window.parseInt('F', 16);  // 15
// window.parseInt로 호출할 수 있다.
parseInt('F', 16);  // 15

window.parseInt === parseInt;  // true
  • 브라우저 환경의 모든 자바스크립트 코드는 하나의 전역 객체 window를 공유한다. 다시 말해 여러 개의 <script> 태그를 통해 자바스크립트 코드를 분리해도 하나의 전역 객체 window를 공유한다.

  • var 키워드로 선언한 전역 변수와 선언하지 않은 변수에 값을 할당한 암묵적 전역, 그리고 전역 함수는 전역 프로퍼티가 된다.

// var 키워드로 선언한 전역 변수
var foo = 1;
console.log(window.foo);  // 1

// 선언하지 않은 변수에 값을 암묵적 전역, bar는 전역 변수가 아니라 전역 객체의 프로퍼티다.
bar = 2;  // window.bar = 2
console.log(window.bar);  // 2

// 전역 함수
function baz() {
  return 3;
}
console.log(window.baz);  // 3
  • let이나 const 키워드로 선언한 전역 변수는 전역 객체의 프로퍼티가 아니다. 즉, window.foo와 같이 접근할 수 없다. let이나 const 키워드로 선언한 전역 변수는 렉시컬 환경의 선언적 환경 레코드 내에 존재하게 된다.
let foo = 123;
console.log(window.foo);  // undefined
  • 즉, 전역 객체는 계층적 구조상 어떤 객체에도 속하지 않은 모든 내장 객체(표준 내장 객체와 호스트 객체)의 최상위 객체다. 그러나 전역 객체가 최상위 객체라는 것은 프로토타입 상속 관계상에서 최상위 객체라는 의미가 아니다.

  • 전역 객체 자신은 어떤 객체의 프로퍼티도 아니며 객체의 계층적 구조상 표준 빌트인 객체와 호스트 객체의 프로퍼티로 소유한다는 것을 말한다.

0개의 댓글