Programing/JavaScript

Javascript JQuery 구조 따라해보기 jQuery 처럼 라이브러리 만들기

리커니 2022. 3. 19. 08:00
반응형

Javascript JQuery 구조 따라해보기 jQuery 처럼 라이브러리 만들기

이번 포스팅에서는 jQuery 를 따라해보는 시간을 갖어볼까 합니다.

예를들어 $("#aa") 와 같이 Selector에 접근하고 

$.ajax() 처럼 메소드를 실행하는 구조를 따라해보겠습니다.

 

우선 Selector 기능을 담당하는 DomControl Class를 생성합니다.

 

class DomControl{
    constructor(selector){
        this.selector = document.querySelectorAll(selector);
    }
    append(element){
        for(let ele of this.selector){
            ele.append(element);
        }
    }
}

 

이 클래스는 Element에 대한 기능을 담당하는 클래스 입니다. 추가적인 기능이 필요하다면 append와 같이 클래스의 메소드로 추가해 줍니다.

 

$.ajax() 처럼 메소드 호출 기능을 하기위한 Common 클래스를 생성합니다.

 

class Common{
    constructor(){}
    ajax(){
        console.log("ajax method");
        /*ajax 기능 구현*/
    }
}

 

이제 이 두 메소드로 jQuery 처럼 동작하게 코드를 작성해보죠.

 

window.$ = function(selector){
    return new DomControl(selector);
}
$.__proto__ = new Common();

 

전역에서 $로 접근하기 위해 window.$ 에 익명함수를 선언합니다.

익명함수는 selector를 받아 DomControl 클래스를 리턴합니다.

Selector 가 어떻게 동작하는지 알아보죠.

 

<section></section>
<section></section>
<section></section>

<script>
console.log($("section"));
console.log($("section").selector);

const p = document.createElement("p");
$("section").append(p);

$.ajax();
</script>

위의 예시 코드의 실행결과는 아래와 같습니다.

 

$("section") 은 DomControl class를 리턴하고

실제 DOM은 $("section").selector 로 접근하죠.

$("section").append(p);를 하게되면 접근한 모든 section에 p 태그가 추가되게 됩니다.

 

$.ajax(); 를 실행하게되면 $.__proto__ = new Common(); 설정으로

프로토타입 체이닝에의해 Common Class의 ajax() 메소드를 실행하게 됩니다.

 

마지막으로 $의 전체 구조를 보도록 하죠.

 

$는 익명함수이고 실행 시 DomControl Class가 리턴되며 prototype으로는 Common Class가 설정된 구조 입니다.

위의 예시를 따라 자신만의 라이브러리를 만들어보세요!

반응형