this
요소이며 $(this)
해당 요소로 구성된 jQuery 객체입니다.
$(".class").each(function(){
//the iterations current html element
//the classic JavaScript API is exposed here (such as .innerHTML and .appendChild)
var HTMLElement = this;
//the current HTML element is passed to the jQuery constructor
//the jQuery API is exposed here (such as .html() and .append())
var jQueryObject = $(this);
});
더 깊은 모습
this
MDN 은 실행 컨텍스트에 포함되어 있습니다
범위는 현재 실행 컨텍스트 ECMA를 나타냅니다 . 이해하기 위해서 this
, 실행 컨텍스트는 자바 스크립트에서 작동하는 방식을 이해하는 것이 중요합니다.
실행 컨텍스트가 이것을 바인딩
제어가 실행 컨텍스트에 들어가면 (코드가 해당 범위에서 실행되고 있음) 변수의 환경이 설정됩니다 (Lexical and Variable Environments)-기본적으로 변수에 액세스 할 수있는 영역과 로컬 변수에 대한 영역을 설정합니다. 저장) 및 바인딩이 this
발생합니다.
jQuery가 이것을 바인딩합니다.
실행 컨텍스트는 논리적 스택을 형성합니다. 결과적으로 스택에서 더 깊은 컨텍스트는 이전 변수에 액세스 할 수 있지만 바인딩이 변경되었을 수 있습니다. jQuery는 콜백 함수를 호출 할 때마다 apply
MDN 을 사용 하여이 바인딩 을 변경합니다 .
callback.apply( obj[ i ] )//where obj[i] is the current element
호출의 결과 apply
즉 , jQuery를 콜백 함수의 내부에 this
현재 요소를 지칭 콜백 함수에 의해 사용된다.
예를 들어에서에서 .each
일반적으로 사용되는 콜백 함수는을 허용합니다 .each(function(index,element){/*scope*/})
. 그 범위에서 this == element
사실입니다.
jQuery 콜백은 apply 함수를 사용하여 현재 요소로 호출되는 함수를 바인딩합니다. 이 요소는 jQuery 객체의 요소 배열에서 가져옵니다. 생성 된 각 jQuery 객체에는 jQuery 객체 를 인스턴스화하는 데 사용 된 선택기 jQuery API 와 일치하는 요소 배열이 포함 됩니다.
$(selector)
jQuery 함수를 호출합니다 ( 코드에 $
대한 참조 임을 기억하십시오 :) . 내부적으로 jQuery 함수는 함수 객체를 인스턴스화합니다. 따라서 내부적으로 사용 하면 즉시 명백하지 않을 수도 있습니다 . 이 jQuery 객체 구성의 일부는 선택기의 모든 일치 항목을 찾는 것입니다. 생성자는 html 문자열 과 요소 도 허용 합니다 . 당신이 통과 할 때 JQuery와 생성자에, 당신이 jQuery를 객체의 현재 요소를 전달하는로 구성된다 . 그런 다음 jQuery 객체에는 선택기와 일치하는 DOM 요소의 배열과 같은 구조가 포함됩니다 (또는 경우 단일 요소 ).jQuery
window.jQuery = window.$ = jQuery;
$()
new jQuery()
this
this
jQuery 객체가 생성되면 jQuery API가 노출됩니다. jQuery API 함수가 호출되면이 배열과 유사한 구조를 내부적으로 반복합니다. 배열의 각 항목에 대해 API의 콜백 함수를 호출하고 콜백 this
을 현재 요소에 바인딩합니다 . 이 호출은 위의 코드 스 니펫 obj
에서 배열과 같은 구조이며 i
현재 요소의 배열에서 위치에 사용되는 반복자입니다.