JavaScript 자바스크립트 this 사용
페이지 정보
본문
자바스크립트에는 함수를 호출하는 4가지 방법이 있습니다.
각각의 방법에 따라 this 라는 매개변수를 다르게 초기화 합니다.
1. 매서드 호출
2. 함수 호출
3. 생성자 호출
4. apply 호출
1. 매서드 호출
함수를 객체의 속성에 저장하는 경우 이 함수를 매서드라 함
이때 this는 매서드를 포함하는 객체에 바인딩됩니다.
<script type="text/javascript">
var obj={
value:99,
getValue:function() {
alert(this.value);
}
};
obj.getValue(); // 99 출력
</script>
2. 함수 호출
함수가 객체의 속성이 아닌 단순 함수(function)로서 호출될때,
객체의 속성에 저장하는 경우 이 함수를 매서드라 함
이때 this는 전역객체(자바스크립트에서 Global object는 window object 다)에 바인딩됩니다.
또는 함수가 page에 포함되어 있다면... this는 page의 "owner"(클래스...!?)에 해당
<script type="text/javascript">
var doSomthing=function() {
alert(this); // window
};
</script>
3. 생성자 호출
함수를 new 라는 전치 연산자와 함께 호출하면, 호출한 함수의 prototype 속성값에 연결된 링크를 갖는 객체가 생성이 되고 이때 this는 새로운 객체에 바인딩됩니다.
<script type="text/javascript">
var object = function(str) {
this.status=str;
};
obj.prototype.getStatus=function() {
return this.status;
}
var myobj=new obj("going");
myobj.getStatus(); // going 출력
</script>
4. apply(또는 call) 호출
apply 매서드는 this의 값을 선택할수 있도록 해준다.
apply 매서드에는 매개변수 두개가 있는데, 첫째는 this에 묶이게 될 값이며, 두번째는 매개변수들의 배열입니다.
<script type="text/javascript">
var obj=function(str) {
this.status=str;
};
var statusObj={
status:'okok'
};
obj.prototype.getStatus.apply(statusObj); // okok 출력
</script>
관련자료
댓글목록
등록된 댓글이 없습니다.