jQuery 소스 학습 1
jQuery는 ExtJS와 많이 다르기 때문에 ExtJS는 비교적 방대하다. 예를 들어 분류가 비교적 명확하고 동적 방법, 정적 방법, 속성 등은 보자마자api만 봐도 잘 알 수 있다.ExtJS가 그렇게 하는 것은 그가 비교적 큰 틀이지만 jQuery는 도구 라이브러리일 뿐이다. 작고 유연한 것이 특징이기 때문에 jQuery에서 우리는 많은 용법을 볼 수 있다. 우리는 평소에 그렇게 사용한 적이 없다.
1.downloadjquery-1.3.2.js 후 원본 코드를 열면 전체 jquery의 구조가
(function(){
.....//
})();
이 중간 생략 부분은 jQuery의 주요 코드 구현 부분이다.처음에 보니까 잘 안 보였는데 나중에 천천히 연구해 보니 첫 번째 괄호 안에 js 함수가 있었어요.
일반적으로 쓰기 함수는 다음과 같습니다.
//
function functionName(){
.....
}
//
functionName();
jQuery의 첫 번째 괄호 안에 있는 그 함수는 함수 이름만 생략한 것이니 여기서 잠시 익명 함수라고 하자. 괄호로 묶으면 우선순위를 높이기 위해 처리할 뿐이다.
즉, "(function () {})"을 함수 이름 jquery Fun으로 바꾸고, 다시 보면, 이때가 된다.
jqueryFun();
이게 바로 jqueryFun이라는 함수를 호출한 거 아닙니까!
이렇게 보면, 우리가 jquery를 웹 페이지에 가져올 때, jqurey 코드가 불러오기만 하면 jQuery 기능을 즉시 실행합니다.
(function(){
var
window = this,
undefined,
_jQuery = window.jQuery,
_$ = window.$,
jQuery = window.jQuery = window.$ = function( selector, context ) {
return new jQuery.fn.init( selector, context );
},
quickExpr = /^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,
isSimple = /^.[^:#\[\.,]*$/;
})();
위의 몇 줄의 코드는 주로 jQuery를 초기화하기 전의 일부 조정입니다. jQuery의 실행을 가속화하기 위해
예를 들어 jQuery = window.jQuery = window.$,jQuery, $를 등가하면 뒤에 $기호를 사용할 수 있습니다.
이렇게 하면 jQuery를 window의 속성으로 등록합니다. 이렇게 하면 jQuery와 $를 사용합니다. 예를 들어 documnt 등 window 아래의 다른 속성을 사용합니다.
그리고 Return new jQuery.fn.init( selector, context );jQuery 관련 설정의 초기화 작업을 진행합니다!
quickExpr와 isSimple은 두 가지 정규 표현식이고, quickExpr는 html 라벨을 검사하고, isSimple는 검사selector를 검사한다.
jQuery 작성자의 설명에 따르면:
// A simple way to check for HTML strings or ID strings
// (both of which we optimize for)
quickExpr = /^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,
// Is it a simple selector
isSimple = /^.[^:#\[\.,]*$/;
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다른 사람의 웹사이트 편집: contenteditable 및 designMode그래도 우리가 그렇게 할 수 있다고 생각하는 것은 멋진 일입니다. 제가 강조하고 싶었던 일종의 관련 API가 실제로 몇 개 있기 때문에 오늘 그것을 가져왔습니다. contenteditable는 "true" 값이 할당...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.