jQuery 소스 분석의 noConflict()
1997 단어 javascript
conflict () 는
$
또는 jQuery
의 제어권을 첫 번째로 그것을 실현한 라이브러리에 양보하여 jQuery
다른 라이브러리의 $대상과 충돌하지 않도록 합니다.jQuery의 소스는 다음과 같습니다.
var _jQuery = window.jQuery,
_$ = window.$;
jQuery.noConflict = function(deep){
if(window.$ === jQuery){
window.$ = _$;
}
if(deep && window.jQuery === jQuery){
window.jQuery = _jQuery;
}
};
원본 코드를 분석하기 전에 우리는 몇 가지 점을 주의해야 한다.
_jQuery = window.jQuery
와_$ = window.$
는 의미가 없습니다만약 우리가 두 개의 라이브러리를 도입했다면,prototype.js 및 jQuery.js.prototype.js 앞, jQuery.js는 뒤에 있고prototype.js에 $이름공간이 존재합니다
// jQuery , prototype.js $ jQuery
var _jQuery = window.jQuery,_$ = window.$;
jQuery.noConflict = function(deep){
// window.$ jQuery , prototype.js $ _$ window.$
if(window.$ === jQuery){
window.$ = _$;
}
// deep true window.jQuery jQuery , prototype.js jQuery _jQuery window.jQuery
if(deep && window.jQuery === jQuery){
window.jQuery = _jQuery;
}
};
위의 원본 코드를 분석한 후에 몇 가지 생각해 볼 것이 있습니다.
왜 noConflict () 를 호출한 후에 window.$벌써 jQuery야?
이 문제는 jQuery 코드의 마지막 부분에 설명되어 있습니다.
if ( typeof window === "object" && typeof window.document === "object" ) {
window.jQuery = window.$ = jQuery;
}
만약prototype.js에 충돌하는 이름 공간이 없습니다. noConflict () 를 호출하면 어떻게 됩니까?
만약 이전에 충돌하는 명명 공간이 없었다면
_&
와_jQuery
는 모두undefined이기 때문에 window.$
와window.jQuery
는undefined로 덮일 것이다.즉 noConflict () 를 호출하면 jQuery는 $
또는 jQuery
의 제어권을 넘겨주고 이전에 명명 공간 충돌이 있었든 없든참조 자료:http://www.imooc.com/learn/172
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
개별 마크다운 블로그 페이지 만들기 - 13부이를 통해 개별 마크다운 기반 블로그 게시물 작성을 시작할 수 있습니다! 이 기사를 따르려면 을 시작점으로 사용하십시오. blog 페이지 디렉토리에 동적 페이지를 생성하여 시작할 수 있습니다. 이 파일[slug].j...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.