0

鉴于以下情况:

父母有一个父母模块:

define([ParentsModule,...], 
function(ParentsModule,...) {
    return declare("Parent", ..., {

        someFunction: function(arg) {
            var a = new ParentsModule();
            a.doThis(arg);
        },
        ...
    )};
});     

子扩展父。有一个 ChildsModule

define([ChildsModule,Parent,...],
function(ChildsModule,Parent,... ) {
    return declare("Child", [Parent], {

        someFunction: function(arg) {
            this.inherited(arguments);
        },
        ...
    )};
});

ParentsModule 做它自己的事情。

define([ParentsModule,...],
function(ParentsModule,... ) {
    return declare("ChildsModule", [ParentsModule], {
        doThis: function(arg) {
            //bunch of stuff happens here.
        },
    ...
    )};
});

ChildsModule 扩展了 ParentsModule。

define([...],
function(...) {
    return declare("ParentsModule",..., {
        doThis: function(arg) {
            return;
        },
    ...
    )};
});

不编辑“父母”,可以a.doThis(arg);打电话ChildsModule.doThis()吗?

我可以覆盖在父函数中实例化的模块吗?

Parent.someFunction 有很多我想使用的代码。Parent(和ParentsModule)是提供给我的一个类,我是Child(和ChildsModule)的作者。

4

1 回答 1

0

如何覆盖首先加载的ParentsModule,然后加载ChildsModule?当然,这将适用于所有试图实例化 ParentsModule 的代码——不确定这是否是一个问题。

var dojoConfig = { paths: { 'orig_code/ParentsModule': 'new_code/ChildsModule' } };

如果你不熟悉 dojoConfig;在加载 dojo 之前,它需要放置在某个地方。如果您已经有一个,只需将路径对象添加到它。

于 2017-01-13T16:00:51.890 回答