[바미] Javascript에서 전역객체와 활성객체에 대하여..
안녕하세요. 오늘은 Javascript에서 전역 객체와 활성 객체에 대해 알아보려 합니다.
Javascript의 전역 객체와 활성 객체는 매우 중요한 개념입니다.
전역객체?
전역 객체(Global Object)는 Javascript 프로그램이 실행되는 동안 프로그램 전체에서 접근 가능한 객체입니다. 전역 객체는 페이지(웹 페이지에서)에서의 전역 객체인 window와 노드(Node.js)에서의 전역 객체인 global입니다. 전역 객체의 속성과 메서드는 프로그램이 실행되는 동안 어디에서든 접근할 수 있습니다.
예제 코드
다음 코드는 전역 변수 greeting을 정의하고, window.greeting을 통해 접근할 수 있는 것을 보여줍니다
let greeting = "Hello, World!";
console.log(window.greeting); // "Hello, World!"
전역 함수를 정의하는 것도 마찬가지입니다:
function sayHello() {
console.log("Hello!");
}
window.sayHello(); // "Hello!"
전역 객체에 프로퍼티를 추가하거나 변경할 수도 있습니다.
window.greeting = "Hi, there!";
console.log(greeting); // "Hi, there!"
활성 객체?
활성 객체(Activation Object)는 함수가 실행될 때 생성되는 객체입니다. 활성 객체는 함수 내에서 정의된 변수와 인자들을 포함하고 있으며, 함수가 실행될 때 활성 객체는 함수의 스코프에 속한다는 것을 의미합니다. 활성 객체는 함수 실행이 끝나면 소멸되고, 다시 함수가 실행될 때 새로운 활성 객체가 생성됩니다.
예제코드
JavaScript에서 활성 객체는 현재 코드의 실행 컨텍스트에서 this 키워드를 통해 접근할 수 있습니다.
예를 들어, 다음 코드는 객체 person을 정의하고, person 객체의 메소드 sayHello에서 this를 통해 person 객체에 접근할 수 있는 것을 보여줍니다.
let person = {
name: "John Doe",
sayHello: function() {
console.log(`Hello, my name is ${this.name}`);
}
};
person.sayHello(); // "Hello, my name is John Doe"
함수 내부에서 this 값은 호출 방식에 따라 달라집니다. 메소드와 같이 객체에서 호출될 경우 this는 해당 객체를 가리키지만, 전역 객체에서 호출될 경우 this는 window 객체를 가리킵니다.
let sayHello = person.sayHello;
sayHello(); // "Hello, my name is undefined"
함수의 call 메소드나 apply 메소드를 사용하여 함수의 this 값을 직접 지정할 수도 있습니다:
sayHello.call(person); // "Hello, my name is John Doe"