티스토리 뷰

- 즉시실행 함수를 사용하면 안에 있는 함수나 객체 등 멤버들이 비공개가 되는데 이 멤버들을 즉시실행함수 외부에서 참조하기 위한 두 가지 방법을 정리하였습니다.


1)

<script>
    // dom helpers
    var dom = (function(global){
        // validate() 헬퍼 함수 | 전달인자 [조건, 오류메시지]
        // 공개 멤버
        function validate(condition, error_msg){
            if (condition == undefined || condition == null){
                condition = false;
                console.log(condition);
            } else if (!condition && condition != 0 && condition != ''){
                throw new TypeError(error_msg);
            }
        }
        
        // 비공개 멤버
        function apples(){
            console.log('test');
        }

        return {
            'validate' : validate,
        }
    })(window);
    
    // 전역에서 함수실행
    dom.validate(null);
</script>

- IIFE함수에 dom이라고 이름을 넣어주고(함수명은 자유) 함수의 결과값을 객체로 리턴 받는다.


2)

<script> // dom helpers (function(global){ // validate() 헬퍼 함수 | 전달인자 [조건, 오류메시지] // 공개 멤버 function validate(condition, error_msg){ if (condition == undefined || condition == null){ condition = false; console.log(condition); } else if (!condition && condition != 0 && condition != ''){ throw new TypeError(error_msg); } } // 비공개 멤버 function apples(){ console.log('test'); } global.dom = { 'validate' : validate, } })(window); // 전역에서 함수실행 dom.validate(null); </script>

- IIFE함수를 익명으로 사용하되 외부에서 참조할 수 있게 window객체의 매개변수인 global에 dom라는 객체를 생성(이름명은 자유)해서 "이름/값"을 지정한다.

댓글