jQuery 의 체인 호출 each 함수 분석
if (!window['$'])
window['$'] = window['jQuery'];
/*
* jQuery.each
* @param {Object} obj
* @param {Object} func
* jQuery , ,
*/
window['jQuery']['each']=function(obj,func){
if(obj.constructor==Array){
for(var i=0;i<obj.length;i++){
func.call(obj[i],i,obj[i]);// func function(i,item) i ,item
}
}else if(obj.elements&&obj.elements.constructor==Array){// , jQuery Array elements
for(var i=0;i<obj.elements.length;i++){
func.call(obj.elements[i],i,obj.elements[i]);// func function(i,item) i ,item
}
}else{
return null;
}
}
이 함수 의 기초 위 에서 확장 을 시작 할 수 있 습 니 다jQuery 의 prototype 입 니 다.먼저 포장 기 대상 이 직접 호출 할 수 있 는 방법 을 작성 하 는 것 입 니 다.each:(이것 은 중복 이 아 닙 니 다)그리고 이 each 함 수 를 호출 하면 대상 배열 을 옮 겨 다 닐 수 있 습 니 다.예 를 들 어
// jQuery _jQuery
_jQuery.prototype = {
each: function(func){
jQuery.each(this, func);
return this;
},
attr: function(key, value){
// set get
if (arguments.length == 0) {
return null;
}
else
if (arguments.length == 1) {
return this.elements[0].getAttribute(key);
}
else if(arguments.length == 2){
this.each(function(i, item){
// each : , : this window
item.setAttribute(key, value);
})
}
}
/*
*
*/
}
다음은 몇 가지 간단 한 테스트 를 하 겠 습 니 다.(아니면 전편 의 테스트 html)입력:
var k= $('#header'); consoles.write(k.attr('title','test title!').attr('title')); //체인 호출
출력:
test title!
이에 따라 each 방법 으로 포장 기 를 효과적으로 확장 할 수 있 는 방법 으로 추정 된다.
앞에서 말 한 jQuery 의 체인 호출 에 영향 을 미 치 는 요점 은 세 가지 가 있 습 니 다.사실은 사후에 생각해 보면 전혀 간단 하지 않 습 니 다.jQuery 내부 코드 의 유지 느낌 은 일부 라 이브 러 리 보다 좋 지 않 습 니 다.적어도 조작 에 있어 서 사용 하기에 매우 편리 하지만(물론 작은 조작 만 있 을 뿐 큰 프로젝트 는 일시 적 으로 접 할 수 없습니다.큰 사람들 을 따라 다 니 기 는 쉽 지 않다).하지만 옮 겨 다 니 는 것 만으로 도 이 라 이브 러 리 는 세분 화 된 플러그 인 에 의존 할 수 밖 에 없 으 며 확장 하면 비대 해 보일 수 밖 에 없다.
주:jquery 소스 코드 를 자세히 분석 한 사람 이 있다 면 저 에 게 이렇게 졸렬한 이른바 실현 에 코 웃음 을 칠 것 입 니 다.저 는 자바 script dom 고급 프로 그래 밍 디자인 과 자바 script 고급 프로 그래 밍 디자인 모델 등 좋 은 책 을 몇 권 본 후에 느 꼈 을 뿐 구체 적 인 jquery 의 실현 과 큰 차이 가 있 을 수 있 습 니 다.가능 하 다 면 지적 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【each 문 중첩 거동】 each 안에 each 안에 each왜 each 안에 each를 넣고 싶어졌는가 하면 이런 식으로 계층의 카테고리 기능을 작성하는 과정에서 필요하다고 생각했습니다. 내용이 이런 느낌으로 어려워지고 있습니다. 카테고리 수는 모두 400 가까이 ... 유...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.