전역객체
자바스크립트에서 모든 객체는 전역객체의 property이다.
function func() {
alert('Hello');
}
// 둘다 같은 결과
func();
window.func();
모든 전역변수와 함수는 window 객체의 property이다.
* nodejs의 전역객체는 global이다.
this
함수 내에서 함수 호출 맥락(context)를 의미한다.
함수 호출
function func() {
if(window === this)
alert("window === this");
}
func(); // window === this
함수에서 this는 전역객체인 window이다.
메소드 호출
var o = {
func: function() {
if(o === this)
alert('o === this');
}
}
o.func(); // o === this
메소드에서 this는 메소드가 소속된 객체를 가리킨다.
생성자 호출
var funcThis = null;
function Func() {
funcThis = this;
}
var o1 = Func(); // new가 없을 때
if(funcThis === window) {
document.write('window <br />'); // window
}
var o2 = new Func(); // new가 있을 때
if(funcThis === o2) {
document.write('o2 <br />'); //o2
}
생성자에서 this는 생성자가 만든 객체를 가리킨다.
apply와 this
var o = {}
var p = {}
function func() {
switch(this) {
case o:
document.write('o<br />');
break;
case p:
document.write('p<br />');
break;
case window:
document.write('window<br />');
break;
}
}
func(); // window
func.apply(o); // o
func.apply(p); // p
자바스크립트의 유연성을 잘 보여주는 예제.
apply 함수를 호출하는 객체가 this이다.
'Javascript > 기초공부' 카테고리의 다른 글
[Javascript: 표준 내장 객체] 표준 내장 객체란? / 배열의 확장 (0) | 2020.03.19 |
---|---|
[Javascript: 상속(Inheritance)] 상속의 사용법 / prototype (0) | 2020.03.19 |
[Javascript: 생성자와 new] 객체 생성 (0) | 2020.03.18 |
[Javascript: 객체 지향 프로그래밍(OOP)] 추상화 / 부품화 / 은닉화 / 캡슐화 / 인터페이스 (0) | 2020.03.18 |
[Javascript: apply] 함수의 호출 / apply 응용 (0) | 2020.03.17 |