trackClicksEx function error

case: trackClicksExλΌλŠ” 더이상 μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” ν•¨μˆ˜κ°€ μ—†λŠ” λ³€μˆ˜λ₯Ό ν˜ΈμΆœν•΄ errorλ₯Ό 뿜고 μžˆμ—ˆλ‹€. μš΄μ˜ν•˜λ˜ μ‚¬μ΄νŠΈμ˜ νžˆμŠ€ν† λ¦¬κ°€ μ—†μ–΄μ„œ trackClicksExλ₯Ό μ‚­μ œν•˜μ§„ μ•Šκ³  빈 function(){} 으둜 return

solution

// 빈 객체의 νƒ€μž… κ°€λ“œ(TypeError λ°©μ§€ 슀크립트)
// @λŒ€μƒ:  s, trackClicksEx
(function(window) {
    var REQUIRED_GLOBAL_VARS = {
        s: 'object',
        trackClicksEx: 'function'
    };

    var k, v;

    for (k in REQUIRED_GLOBAL_VARS) {
        v = REQUIRED_GLOBAL_VARS[k];

        fillBlankObject(k, v);
    }

    // window λ„€μž„μŠ€νŽ˜μ΄μŠ€μ—μ„œ μ£Όμ–΄μ§„ `key`에 λŒ€ν•œ 값이 μ •μ˜λ˜μ§€ μ•Šμ•˜μ„ 경우
    // `type`에 맞게 빈 객체 λ˜λŠ” ν•¨μˆ˜λ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.
    // @param {string} key -- ν•΄λ‹Ή μ „μ—­ λ³€μˆ˜μ˜ 이름
    // @param {string} type -- ν•΄λ‹Ή μ „μ—­ λ³€μˆ˜μ˜ νƒ€μž… (κΈ°λ³Έκ°’: 'object')
    function fillBlankObject(key, type) {
        type = type || 'object';

        // keyκ°€ μ£Όμ–΄μ§€μ§€ μ•Šμ„ 경우 μŠ€ν‚΅
        if (!key) {
            return;
        }

        // ν•„μš”ν•œ μ „μ—­ λ³€μˆ˜κ°€ μ •μ˜λ˜μ–΄ μžˆμ§€ μ•ŠμœΌλ©΄
        if (typeof window[key] === 'undefined') {
            window[key] = createEmptyTemp(type);
        }
    }

    function createEmptyTemp(type) {
        type = type.toLowerCase();

        switch (type) {
            case 'function': 
                return function() {};
            break;

            case 'array':
                return [];
            break;

            case 'object':
                return {};
            break;

            case 'string':
                return '';
            break;

            case 'number':
                return 0;
            break;

            default:
                return {};
            break;
        }
    }
})(window);

type ofλŠ” μ™œ?

typeofλ₯Ό μ“΄ μ΄μœ λŠ”..

μ΄λ ‡κ²Œ μ“Έ 경우 별닀λ₯Έ λ¬Έμ œλŠ” μ—†λ‹€. ν•˜μ§€λ§Œ

이런 μ—λŸ¬λ₯Ό λ°©μ§€ν•˜κ³ μž type ofλ₯Ό μ“°μž

Last updated