"不是功能"即使函数在控制台

时间:2016-09-06 10:07:33

标签: javascript

我有一个名为 Utils.MediaQuery 的对象。我正在尝试访问其 isMobile()函数。

但是,出于某种原因,尝试访问该函数会返回一个&#34;而不是一个函数&#34;错误。更糟糕(并且难以调试),该对象显示为在Firefox控制台中具有该功能, 显示为 而不是 < / strong>在Firefox控制台中使用该功能。

调试代码:

console.log("Utils.MediaQuery:", Utils.MediaQuery);
console.log("Utils.MediaQuery.isMobile():", Utils.MediaQuery.isMobile());

结果:

Console error illustration

(&#34;对象&#34;下半部分是点击Utils.MediaQuery对象时得到的)

记录的对象没有isMobile()函数,但其​​描述确实如此。

有罪的对象:

require(['jquery'], function($) {

    Utils = {};

    Utils.MediaQuery = {
        SCREEN_WIDTH_SMALL: 568,
        SCREEN_WIDTH_MEDIUM: 720,
        SCREEN_WIDTH_LARGE: 1010,
        SCREEN_WIDTH_XLARGE: 1400  // in px
    };

    $(function(){
        Utils.$window = $(window);
        Utils.$html = $('html');
        Utils.$body = Utils.$html.find('body');

        Utils.MediaQuery.getViewportWidth = function() {
            return Math.max(document.documentElement.clientWidth,
                window.innerWidth || 0);
        };

        Utils.MediaQuery.isMobile = function() {
            return (Utils.MediaQuery.getViewportWidth() < Utils.MediaQuery.SCREEN_WIDTH_MEDIUM);
        };
    });

});

什么会导致这种行为?

PS:这是我刚刚加入的一个笨重的遗产项目。考虑到我仍然无法了解其架构,我很害怕 我无法解释

PPS:似乎与this question相关,后者又链接到this question,但在这两种情况下,我都无法看到答案如何应用于当前问题。对不起,如果我错了。

0 个答案:

没有答案