[英]how to override dojo function
我想更正dojox / calendar / Calendar中星期数不正确的问题。 我知道要更改什么=> dojo / date / locale中的exports._getWeekOfYear函数
如果我将它放在js文件中,它会完美工作,但是,我不希望/无法修改dojo的文件。
我想应用在这里找到的优先解决方案:
http://g00glen00b.be/dojo-inheritance-overriding-extending/或此处
没有任何成功,我得到一个SyntaxError:缺少:属性ID之后
与var obj = new export();
我上次尝试的代码:
require(["dojo/_base/lang", "dojo/date/locale"], function(lang, locale){
lang.extend(locale, {
var obj = new exports();
obj._getWeekOfYear = function(/*Date*/ dateObject, /*Number*/ firstDayOfWeek){
if(arguments.length == 1){ firstDayOfWeek = 0; }
var determinedate = new Date();
determinedate.setFullYear(dateObject.getFullYear(), dateObject.getMonth(), dateObject.getDate());
var D = determinedate.getDay();
if(D == firstDayOfWeek) D = 7;
determinedate.setDate(determinedate.getDate() + (4 - D));
var YN = determinedate.getFullYear();
var ZBDoCY = Math.floor((determinedate.getTime() - new Date(YN, 0, 1, -6)) / 86400000);
var WN = 1 + Math.floor(ZBDoCY / 7);
return WN;
};
});
});
我试过了 :
exports._getWeekOfYear: function(...)
exports._getWeekOfYear=: function(...)
有任何想法吗?
没有提供完整的解决方案,我注意到的第一件事是“ exports”不是可以使用new关键字实例化的类。 在该特定的dojo模块中,导出只是一个公开API的对象。
看一下SitePen上的解决方案,尤其是“ MonkeyPatching”是一种对我来说很好的机制。
谢谢
我终于设法用这段代码做我想要的
require(["dojo/date/locale"], function( local){
local._getWeekOfYear= function(/*Date*/ dateObject, /*Number*/ firstDayOfWeek){
if(arguments.length == 1){ firstDayOfWeek = 0; }
var determinedate = new Date();
determinedate.setFullYear(dateObject.getFullYear(), dateObject.getMonth(), dateObject.getDate());
var D = determinedate.getDay();
if(D == firstDayOfWeek) D = 7;
determinedate.setDate(determinedate.getDate() + (4 - D));
var YN = determinedate.getFullYear();
var ZBDoCY = Math.floor((determinedate.getTime() - new Date(YN, 0, 1, -6)) / 86400000);
var WN = 1 + Math.floor(ZBDoCY / 7);
return WN;
}
;
});
确实出口是铅。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.