javascript this 용법 소결

5662 단어 자바 scriptthis
this 는 대상 언어 를 대상 으로 하 는 중요 한 개념 으로 JAVA,C\#등 대형 언어 에서 this 는 실행 중인 현재 대상 을 고정 적 으로 가리킨다.그러나 자바 script 에 서 는 자바 script 의 동태 성(해석 실행,물론 간단 한 사전 컴 파일 과정 도 있 습 니 다)으로 인해 this 의 지향 은 실행 할 때 만 확 정 됩 니 다.이 특성 은 우리 에 게 현혹 을 주 는 동시에 프로 그래 밍 의 자유 와 유연성 을 가 져 왔 다.apply(call)방법 을 결합 하면 JS 를 매우 강하 게 만 들 수 있다.2.변 화 된 this 는 JavaScript 에서 this 는 우리 가 실행 하고 있 는 함수 자 체 를 가리 키 거나 이 함수 가 속 한 대상(실행 시)을 가리킨다.우리 가 페이지 에서 함수 doSomething()을 정 의 했 을 때,그것 의 owner 는 페이지 나 JavaScript 의 window 대상(또는 global 대상)입 니 다.onclick 속성 에 대해 서 는 HTML 요소 에 속 합 니 다.this 는 이 HTML 요 소 를 가 리 켜 야 합 니 다.2.1 몇 가지 흔히 볼 수 있 는 장면 에서 this 의 변화 함수 예제 function doSomething(){alert(this.navigator);/appCodeName this.value = "I am from the Object constructor"; this.style.backgroundColor = "# 000000"; } 1.(A)일반 함수 로 직접 호출 할 때 this 는 window 대상 을 가 리 킵 니 다.2.(B)컨트롤 이벤트 가 실 행 될 때 1)inline event registration 내 연 이벤트 등록.이 벤트 를 HTML 코드 에 직접 기록 합 니 다().이때 this 는 window 대상 을 가 리 킵 니 다.2)전통 이벤트 등록 전통 이벤트 등록(DHTML 방식).예 를 들 어 element.onclick=doSomething;이때 this 는 element 대상 3)을 매개 변수 로 전달 하면 element 3.(C)를 대상 으로 사용 할 때 this 는 현재 대상 을 가리킨다.new doSomething();4.(D)apply 또는 call 방법 을 사용 할 때 this 는 전달 하 는 대상 을 가리킨다.var obj={};doSomething.apply(obj,new Array(”nothing”); //this à obj 는 이벤트 처리 에서 this 를 어떻게 사용 하 는 지 설명 한 다음 에 this 와 관련 된 예 를 추가 하 겠 습 니 다.Owner 다음 글 에서 우리 가 토론 할 문 제 는 함수 doSomething()에서 this 가 가리 키 는 것 은 무엇 입 니까?Javascript 코드 함수 doSomething(){this.style.color='\#cc 0000';}function doSomething() { this.style.color = '#cc0000'; } JavaScript 에서 this 는 일반적으로 우리 가 실행 하고 있 는 함수 자 체 를 가리 키 거나 이 함수 가 속 한 대상 을 가리 키 는 것 입 니 다.우리 가 페이지 에서 함수 doSomething()을 정 의 했 을 때,그것 의 owner 는 페이지 나 JavaScript 의 window 대상(또는 global 대상)입 니 다.onclick 속성 에 대해 서 는 HTML 요소 에 속 합 니 다.this 는 이 HTML 요 소 를 가 리 켜 야 합 니 다.이러한'소유권'은 바로 JavaScript 에서 대상 을 대상 으로 하 는 방식 이다.Objects as associative arrays 에서 더 많은 정 보 를 볼 수 있 습 니 다  만약 우리 가 더 많은 준비 없 이 doSomething()을 실행한다 면,this 키 워드 는 window 를 가리 키 고,이 함 수 는 window 의 style.color 를 바 꾸 려 고 합 니 다.window 에 style 대상 이 없 기 때문에 이 함 수 는 불행 하 게 도 실행 에 실패 하고 자바 스 크 립 트 오류 가 발생 합 니 다.Copying 따라서 this 를 충분히 이용 하려 면 this 를 사용 하 는 함수 가 정확 한 HTML 요소 에 의 해 소유 되 어야 합 니 다.다시 말 하면,우 리 는 이 함 수 를 우리 의 onclick 속성 으로 복사 해 야 한다.Traditional event registration 이 관심 을 가 질 겁 니 다.Javascript 코드 element.onclick=doSomething;element.onclick = doSomething; 이 함 수 는 onclick 속성 으로 완전히 복사 되 었 습 니 다.따라서 이 이벤트 handler 가 실행 되면 this 는 HTML 요 소 를 가리 키 고 이 요소 의 색상 이 변 경 됩 니 다  이 방법 은 우리 로 하여 금 이 함 수 를 여러 이벤트 handler 로 복사 할 수 있 게 한다.매번 this 는 정확 한 HTML 요 소 를 가리킨다 이렇게 하면 너 는 최대한 this 를 사용 할 수 있다.이 함 수 를 실행 할 때마다 this 가 가리 키 는 HTML 요 소 는 이벤트 에 정확하게 응답 합 니 다.이 HTML 요 소 는 doSomething()의 복사 본 을 가지 고 있 습 니 다.참조 하지만 인 라인 이벤트 등록(내 연 이벤트 등록)Javascript 코드을 사용 하면 이 함 수 를 복사 할 수 없습니다!오히려 이런 차 이 는 매우 중요 하 다.onclick 속성 은 실제 함 수 를 포함 하지 않 고 함수 호출 일 뿐 입 니 다.Javascript 코드 doSomething();doSomething(); 따라서"doSomething()으로 이동 하고 실행 합 니 다"라 고 설명 합 니 다.doSomething()에 도 착 했 을 때 this 키 워드 는 전역 window 대상 을 다시 가리 키 고 함수 가 오류 정 보 를 되 돌려 줍 니 다  The difference 는 this 를 사용 하여 HTML 요소 가 응답 하 는 이 벤트 를 가리 키 려 면 this 키워드 가 onclick 속성 에 쓰 여 있 는 지 확인 해 야 합 니 다.이 경우 에 만 이벤트 handler 가 등록 한 HTML 요 소 를 가 리 킵 니 다.Javascript 코드 element.onclick=doSomething;alert(element.onclick) element.onclick = doSomething; alert(element.onclick)자 바스 크 립 트 코드 function doSomething(){this.style.color='\#cc 0000';}function doSomething() { this.style.color = '#cc0000'; } 보시 다시 피 this 키 워드 는 onclick 함수 에 나타 나 므 로 HTML 요 소 를 가리 키 고 있 습 니 다.하지만 자 바스 크 립 트 코드alert(element.onclick)alert(element.onclick)를 실행 하면 자 바스 크 립 트 코드 function onclick(){doSomething()}function onclick(){doSomething()}은 doSomething()함수 에 대한 참조 일 뿐 입 니 다.this 키 워드 는 onclick 함수 에 나타 나 지 않 았 기 때문에 HTML 요 소 를 가리 키 지 않 습 니 다.예--아래 의 예 를 복사 하면 this 는 onclick 함수 에 기 록 됩 니 다:Javascript 코드 element.onclick=doSomething element.addEventListener(click',doSomething,false)element.onclick=function(){this.style.color='\#cc 0000';} element.onclick = doSomething element.addEventListener('click', doSomething, false) element.onclick = function() {this.style.color = '#cc0000';} 예--다음 과 같은 상황 에서 this 는 window:Javascript 코드 element.onclick=function(){doSomething()}element.attachEvent('onclick',doSomething)element.onclick=function(){doSomething()}element.attachEvent('onclick',doSomething)attachEvent()의 출현 에 주의 합 니 다.Microsoft 이벤트 registration model 의 가장 큰 단점 은 attachEvent()가 복사 하 는 것 이 아니 라 지향 함수 의 인용 을 만 드 는 것 입 니 다.그래서 어떤 HTML 이 이 사건 을 처리 하고 있 는 지 알 수 없 을 때 도 있다.조합 사용 내 연 된 이벤트 등록 을 사용 할 때 이 를 함수 에 보 내 정상적으로 사용 할 수 있 습 니 다:자바 script 코드function doSomething(obj){/this 를 이벤트 handler 에 나타 나 함수//obj 가 HTML 요 소 를 가리 키 기 때문에 이렇게 할 수 있 습 니 다:obj.style.color='\#cc 0000';}

좋은 웹페이지 즐겨찾기