如何在JQuery中创建全局函数?

时间:2018-06-15 15:39:20

标签: javascript jquery function global

我正在尝试将常用功能卸载到单独的functions.js文件中以便清理。我在使全局函数工作方面取得了成功,但是我需要编写和调用令我困惑的函数的方式存在一些不一致。

我的全球职能之一:

$.getTld = function() {
    var tld = document.location.hostname.split('.').pop();
    return tld;
};

我可以从另一个JS文件中调用它:

$.setPersonaCookie = function(name, value, days) {
    $.cookie(name, value, {
        expires: days, // Expires in 360 days
        path: '/', // Is on the default path
        domain: 'mydomain.' + $.getTld(), // The value of the domain attribute of the cookie
        secure: $.getProtocol() // set secure cookies - setting in htaccess
    });
    return;
};

在我的相同functions.js文件中,我使用与$ .getTld函数相同的方式设置了另一个函数:

$.getQueryVariable = function(name, url) {
    if (!url) url = location.href;
    name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
    var regexS = "[\\?&]"+name+"=([^&#]*)";
    var regex = new RegExp( regexS );
    var results = regex.exec( url );
    return results == null ? null : results[1];
};

我正在调用这样的函数:

$(document).getQueryVariable('q');

但是,我收到一个控制台错误,指出未定义$ .getQueryVariable。为了使它工作,我写了这样的函数:

$.fn.getQueryVariable = function(name, url) {...};

以这种方式编写时,我可以成功调用该函数。

那么,为什么我需要将额外的.fn添加到getQueryVariable函数中以使其作为全局函数工作?

0 个答案:

没有答案