我试图从另一个在此文件bootstrap-datepicker.js之后加载的JS文件中引用UTCDate()方法。 有没有办法让我访问这个方法。 我尝试使用UTCDate()我甚至尝试过window.UTCDate()。
这是原始文件bootstrap-datepicker.js,他们似乎直接在datePicker本身内调用它。
(function($, undefined){
var $window = $(window);
function UTCDate(){
return new Date(Date.UTC.apply(Date, arguments));
}
function UTCToday(){
var today = new Date();
return UTCDate(today.getFullYear(), today.getMonth(), today.getDate());
}
function alias(method){
return function(){
return this[method].apply(this, arguments);
};
}
var DateArray = (function(){
var extras = {
get: function(i){
return this.slice(i)[0];
},
contains: function(d){
// Array.indexOf is not cross-browser;
// $.inArray doesn't work with Dates
var val = d && d.valueOf();
for (var i=0, l=this.length; i < l; i++)
if (this[i].valueOf() === val)
return i;
return -1;
},
remove: function(i){
this.splice(i,1);
},
replace: function(new_array){
if (!new_array)
return;
if (!$.isArray(new_array))
new_array = [new_array];
this.clear();
this.push.apply(this, new_array);
},
clear: function(){
this.length = 0;
},
copy: function(){
var a = new DateArray();
a.replace(this);
return a;
}
};
return function(){
var a = [];
a.push.apply(a, arguments);
$.extend(a, extras);
return a;
};
})();
答案 0 :(得分:0)
如果不修改代码,就不能在匿名闭包之外导出该方法。
答案 1 :(得分:0)
这就是closures
的工作方式:它们关闭变量。
function UTCDate(){
return new Date(Date.UTC.apply(Date, arguments));
}
是您IIFE的私人资格。 您最好切换到The Revealing Module Pattern:
var myDateApp=function(){
...
function UTCDate(){
return new Date(Date.UTC.apply(Date, arguments));
}
...
return {
...
UTCDate:UTCDate,
...
};
}();
然后,您可以通过UTCDate
轻松访问功能myDateApp.UTCDate()
。
稍后切换到AMD。