본문 바로가기
📌 Front End/└ jQuery

[jQuery] 전역 함수와 매개변수 처리 방법

by 쫄리_ 2023. 3. 10.
728x90
반응형

jQuery에서 전역 함수는 다음과 같이 생성합니다.

javascript에서 단순 함수를 만들어 사용해도 되는 부분이지만 jQuery에서는 이렇게 사용하는 것도 가능하다는 것만 참고로 하면 될 것 같습니다.

 

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="utf-8">
    <title></title>
    <script src="https://code.jquery.com/jquery-3.5.1.js" integrity="sha256-QWo7LDvxbWT2tbbQ97B53yJnYU3WhH/C8ycbRAkjPDc=" crossorigin="anonymous"></script>
    <script>
        $.myfunc = function () {
            $('img').animate({
                opacity: 0.2
            }, 'slow', function() {
                alert('완료');
            });
        };

        $(function () {
            $.myfunc();
        });
    </script>
</head>
<body>
    <img src="http://cliel.com/assets/img/item/home.png">
</body>
</html>

$.[함수명]의 형태로 선언한 뒤에 원하는 함수를 구현하고

$.[함수명]의 형태로 호출합니다.


만약 함수를 호출하는데 선택자가 사용되어야 한다면 jQuery의 fn속성을 사용해야 합니다.

$.fn.myfunc = function () {
    $(this).animate({
        opacity: 0.2
    }, 'slow', function() {
        alert('완료');
    });
};

$(function () {
    $('img').myfunc();
});

이때 this는 선택자에서 선택된 요소를 의미하며

함수를 호출할때는 $(선택자).[함수명] 형태로 호출해야 합니다.


생성한 전역함수에 특정한 값을 전달해야 한다면 원하는 값을 전달하는 객체를 지정해 다음과 같이 넘겨야 합니다.

$.fn.myfunc = function (param) {
    $(this).animate({
        opacity: 0.2
    }, 'slow', function() {
        alert('완료');
    });

    alert(param.myvalue);
};

$(function () {
    $('img').myfunc({
        myvalue: 'abc'
    });
});

객체가 존재하지 않는 경우 기본값을 지정해야 한다면 미리 객체를 정의해 둘 수 있습니다.

$.fn.myfunc = function (param) {
    $(this).animate({
        opacity: 0.2
    }, 'slow', function() {
        alert('완료');
    });

    var pr = { myvalue : 'def' };  // 기본값 미리 정의

    $.extend(pr, param);    // 넘겨주는 인자 param이 있을 경우 기존 'def'값 덦어쓸 수 있도록 한다.

    alert(pr.myvalue);
};

// 기본값 던질 경우 -> abc 적용됨
$(function () {
    $('img').myfunc({
        myvalue: 'abc'   // 매개변수를 객체 형식으로 던짐 { , } -> 객체형식
    });
});

// 기본값 안 던질 경우 -> 'def' 적용됨
$(function () {
    $('img').myfunc();
});

하지만 미리 객체를 전달할지 하지 않을지 알 수 없으므로 이때는 param이 존재하는 경우 기존 객체의 값을 덮어쓸 수 있도록 $.extend를 사용합니다.

위와 같이 하면 함수를 호출할 때 '객체가 존재'하면 해당 객체의 값을,   '존재하지 않으면' 기존 객체의 값을 사용하게 됩니다.

728x90
반응형