this 란 무엇인가? this 가 가르키는 건 무엇인가? 주의사항은? |
[이전강좌] typeof 사용시의 주의사항, array type 판별코드.
this 란 무엇인가?
this 키워드는, 해당 function 을 invoke 한 object 를 가르키는 데 사용된다.
this 가 가르키는 것은 어떻게 판별하는가?
1. Function.call 이나 Function.apply 를 통해 function call 을 하게 되면, call() 이나 apply() 의 첫번쨰 argument 가 this 가 된다. 만약 Function.call 이나 Function,apply 의 첫번째 argument 로 null 이나 undefined 가 들어왔다면 this는 global object 를 참조한다.
2. 만약 Function.bind 를 통해 function call 이 일어나면 this 는 bind() 의 첫번째 인자를 가르킨다.
3. 만약 function 이 object 의 method 로서 불렸다면 this 는 해당 object 를 가르킨다.
4. function 이 standalone function 이라면, this 는 global object 를 가르킨다.
주의사항은?
namespace 가 긴 함수의 경우 비교적 쉬운 이름의 variable 에 함수를 저장하여 사용하는 경우가 있는데, 이때는 this 가 가르키는 것이 무엇인지 확실히 하여 실수에 주의해아 한다.
var nameSpace={
object:{
name:"aroundck"
sayHello:function(){
console.log( "Hi! " + this.name );
}
}
};
var hi = nameSpace.object.sayHello;
hi(); // "Hi! undefined"
대신,
var hi = nameSpace.object;
hi.sayHello(); // Hi! aroundck.
[다음강좌] Scope. var 없이 변수 정의하면? Global variable 접근방법은?
'프로그래밍 놀이터 > Web' 카테고리의 다른 글
[JavaScript/Tutorial] Closure 와 Function.bind 의 사용. (0) | 2013.05.26 |
---|---|
[JavaScript/Tutorial] Scope. var 없이 변수 정의하면? Global variable 접근방법은? (0) | 2013.05.24 |
[JavaScript/Tutorial] typeof 사용시의 주의사항, array type 판별코드. (0) | 2013.05.23 |
[JavaScript/Tutorial] Function 정의 방법 (0) | 2013.05.22 |
[JavaScript/Tutorial] Object 특징, method와 properties 의 구분, literal (0) | 2013.05.21 |
댓글