Module 在dojo/_base/declare'中添加要从中派生的AMD模块;s构造函数
想象一下:Module 在dojo/_base/declare'中添加要从中派生的AMD模块;s构造函数,module,dojo,mixins,amd,Module,Dojo,Mixins,Amd,想象一下: var derivedFrom = [someMixin]; declare(derivedFrom, { // ... }); 每次我创建这个模块的新实例时,都会从someMixin中派生出这个函数 想象一下,现在我想添加一个参数,这样someMixin将仅从if true加载和派生: var derivedFrom = []; declare(derivedFrom, { constructor: function (options) { i
var derivedFrom = [someMixin];
declare(derivedFrom, {
// ...
});
每次我创建这个模块的新实例时,都会从someMixin中派生出这个函数
想象一下,现在我想添加一个参数,这样someMixin将仅从if true加载和派生:
var derivedFrom = [];
declare(derivedFrom, {
constructor: function (options) {
if (options.someCondition)
require(['some/mixin'], function (someMixin) {
derivedFrom.push(someMixin);
});
}
});
这样的事情可以实现吗?使用工厂方法,它接受输入,然后为您提供a类或B类,这有意义吗?试图创建一个在自己的构造函数中更改自己继承的类似乎会变得非常粗糙。这是有意义的:)我们将如何做到这一点?有很多变化。最简单的方法是创建一个Dojo模块,该模块提供一个
makeFooOrBar()
函数,并调用该函数。另一种方法是在类定义中添加一个类似“静态”的函数,这样您就不用newfooclass()
而是FooClass.createfoooorbar()
。(实际上,防止人们意外地使用newfooclass()
需要更多的魔法。)