我正在尝试将常用功能卸载到单独的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函数中以使其作为全局函数工作?