我认为我没有按要求使用dojo.mixin ......
我有以下代码:
dojo.declare("A",null,{
_configuration: {},
constructor: function(configuration)
{
if(this._configuration.something === 2)
{
// we should never come here; the constructor is only called on a new instance which should still have an empty _somethingPrivate
// because the class declaration says so
console.log("why does this happen?");
}
// merge empty configuration
dojo.mixin(this._configuration, configuration);
}
});
var myInstance = new A({ something: 2 });
var myInstance = new A({});
据我了解,您可以使用dojo.mixin合并对象。我尝试将默认配置对象与给定参数(在对象中)合并,但控制台输出是“为什么会发生这种情况?”所以来自先前对象的参数被合并到 new 对象中。
任何人都可以对此有所了解吗?
顺便说一句:dojo版本1.6(我们还不能升级)
答案 0 :(得分:3)
因为您将配置定义为_configuration: {},
,所以它将在窗口小部件的所有实例之间共享。因此,当您初始化第二个实例时,它会从第一个实例中看到配置。有关详细信息,请参阅http://dojotoolkit.org/reference-guide/1.6/dojo/declare.html。
_defaultConfig: {},
_configuration: null,
constructor: function(config) {
// clone to use a separate object.
this._configuration = dojo.mixin(dojo.clone(this._defaultConfig), config);
}