Javascript 如何重写dojo函数

Javascript 如何重写dojo函数,javascript,dojo,Javascript,Dojo,我想更正dojox/calendar/calendar中周数不正确的问题。我知道要更改什么=>exports.\u dojo/date/locale中的getWeekOfYear函数 如果我把它放在js文件中,它会工作得很好,但是,我不想/不能修改dojo的文件 我想应用在这里找到的覆盖解决方案: 或 一无所获 我得到一个SyntaxError:缺少:在属性id之后 在带有var obj=新导出()的行上 我上次尝试的代码: require(["dojo/_base/lang", "dojo/

我想更正dojox/calendar/calendar中周数不正确的问题。我知道要更改什么=>exports.\u dojo/date/locale中的getWeekOfYear函数

如果我把它放在js文件中,它会工作得很好,但是,我不想/不能修改dojo的文件

我想应用在这里找到的覆盖解决方案:

一无所获 我得到一个SyntaxError:缺少:在属性id之后

在带有var obj=新导出()的行上

我上次尝试的代码:

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的对象


看看上面的解决方案,尤其是“MonkeyPatching”是一种对我来说非常有效的机制。

如果不提供整个解决方案,我注意到的第一件事是“exports”不是一个可以使用new关键字实例化的类。在特定的dojo模块中,导出只是一个公开API的对象

请查看上的解决方案,尤其是“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;
        }
    ;
});
的确,出口是pb。

谢谢

我终于用这段代码做到了我想要的

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;
        }
    ;
});
事实上,出口就是pb