JavaScript 프로토 타이핑 자습서 [폐쇄
-
20-09-2019 - |
문제
나는 많은 기능을 가진 JS 스크립트를 가지고 있습니다.
function id(i) {
if(document.getElementById)
return document.getElementById(i);
return;
}
문서를 입력 할 때 많은 바이트를 저장합니다. 내 문제는 요소에서 클래스 및 기타 속성을 자주 추가하고 제거하는 것입니다. 나는 이것을 할 수 있기를 원한다 :
id('main').addClass("someClass");
이것을 설명 할 수있는 좋은 JavaScript 프로토 타이핑 자습서를 아는 사람이 있습니까? 감사.
해결책
당신이 찾고있는 기술은 메소드 체인입니다. 기본적으로 "ID"함수는 "addClass"메소드가있는 객체 인스턴스를 반환해야합니다. 그리고 그 방법은 "이것을 반환"할 것입니다.
다음은이 개념을 설명하는 자습서입니다.
http://javaScriptant.com/articles/32/chaining-your-javaScript-methods
나는 또한이 책을 강력히 추천 할 것입니다.
http://jsdesignpatterns.com/
다른 팁
jquery와 같은 것을 사용하는 것을 고려해 보셨습니까? 문제가 발생하면 단순히 다음과 같습니다.
$("#main").addClass("someClass");
그리고 당신은 끝났습니다. 목표가 이것을 직접 구현하는 것이라면 (그렇다면 왜?) 요소에 3 개의 클래스가 있으면 실제 속성은 다음과 같습니다.
"one two three"
물론 다른 측면은 확장 방법을 작성하는 것입니다.
모든 브라우저에서이를 달성 할 수는 없습니다. 특히 IE6 또는 7의 요소에서 사용 가능한 방법을 확장 할 수는 없습니다.
솔직히 말해서 개발에 jQuery를 포함 시키면 시간을 절약 할 수 있습니다.
Cletus가 말한 것처럼 가능하다면 프레임 워크를 사용하는 것이 가장 좋습니다.
그러나 Anthonywjones는 옳지 않습니다. 일반 요소 객체에서 사용 가능한 메소드를 확장 할 수는 없지만 ~할 수 있다 여전히 개별 요소에 추가하십시오.
ID 기능은 AddClass 메소드로 반환 된 요소를 확장 할 수 있습니다.
function get(id){
el = document.getElementById(id);
el.addClass = function(cls){
// your addClass code here
// (remember IE uses className, others use class)
};
return el;
}
이 기능을 지원하는 브라우저의 요소 객체 (페이지의 모든 요소에 자동으로 추가)에 추가 한 다음 IE의 ID 기능에 메소드를 추가 할 수도 있습니다. 메모리를 저장하고 응용 프로그램 속도를 높일 수 있습니다. 특히 많은 요소 방법을 추가하기 시작할 때 조금.
이 동작은 Mootools 가이 문제를 해결하는 방법입니다. 가능한 경우 프레임 워크를 사용하는 것이 좋습니다.