>  기사  >  웹 프론트엔드  >  Javascript_javascript 기술의 이 바인딩 소개

Javascript_javascript 기술의 이 바인딩 소개

WBOY
WBOY원래의
2016-05-16 18:01:511278검색

이것의 구체적인 값은 호출 모드에 따라 다릅니다.
* 메소드 호출 모드: 객체에 바인딩됩니다.
* 함수 호출 모드: 전역 객체에 바인딩되며, 웹페이지의 경우 윈도우에 바인딩됩니다.
* 생성자 호출 모드: 새로 생성된 객체에 바인딩됩니다.
* 이벤트 처리 호출 모드에는 두 가지 경우가 있습니다.
참조* 전역 개체에 바인딩됩니다.

코드 복사 코드는 다음과 같습니다.


...
>
* DOM 개체에 바인딩됩니다.

코드 복사 코드는 다음과 같습니다.
< script type="text/javascript">
function click_handler() {
alert(this) // 버튼 DOM 노드에 경고합니다.
}
function addhandler () {
document.getElementById('thebutton').onclick = click_handler
}
window.onload = addhandler
;button id='thebutton'> ;Click me!


이에 대한 불확실성은 함수 호출 컨텍스트의 변경으로 인해 발생합니다. 이 컨텍스트를 더 명확하게 하기 위해 호출 및 적용 메소드를 사용하여 이 바인딩의 값을 명확하게 할 수 있습니다.
call과 Apply의 차이점은 매개변수에만 있습니다. call은 모든 매개변수 목록을 허용하고 Apply는 매개변수 배열 객체를 허용합니다. 이를 통해 Apply 인수를 두 번째 인수로 받아들일 수도 있습니다.



코드 복사 코드는 다음과 같습니다. func.call(obj1,var1,var2 ,var3)
func.apply(obj1, [var1,var2,var3])
func.apply(obj1, 인수)


그러나 호출 및 적용 메소드는 즉시 실행됩니다. 필요한 경우 나중에 사용하면 다음 예와 같이 조건이 충족되지 않습니다. 여기서 13행과 14행은 call 사용 여부에 관계없이 필요한 값(42)을 얻을 수 없습니다.


코드 복사 코드는 다음과 같습니다.


이때입니다. (The method는 ECMA-262의 5판에 추가되었습니다.) Prototype 프레임워크에 처음 등장했습니다(확인되지 ​​않음). 호출 및 적용과 마찬가지로 바인딩도 함수 실행 컨텍스트, 즉 함수가 실행될 때 this 값을 변경합니다. 차이점은 후속 사용을 위해 함수 참조를 반환한다는 것입니다.



코드 복사
코드는 다음과 같습니다. 다음은 다음과 같습니다. Function.prototype.bind = function(object) { var method = this;
return function() {
method.apply(object, 인수);
}
}


특정 구현에서는 반환된 함수 참조가 실행될 때 클로저 기능을 사용하는 대신 함수 참조를 생성할 때 메서드 및 개체 매개 변수에 액세스할 수 있습니다. this 를 사용하면 실행 중에 원래 메서드 값 대신 다시 바인딩됩니다.
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.