“dojo mixin”;“全球”;上下文
如果我有两个类,#1是#2和#1声明属性的混合体(使用默认值-例如:[]来声明一个新的空数组)-为什么会发生这样的情况,类#2的所有实例共享同一个数组实例 我总是必须在构造函数中初始化我的属性吗 错误代码如下所示:“dojo mixin”;“全球”;上下文,dojo,mixins,Dojo,Mixins,如果我有两个类,#1是#2和#1声明属性的混合体(使用默认值-例如:[]来声明一个新的空数组)-为什么会发生这样的情况,类#2的所有实例共享同一个数组实例 我总是必须在构造函数中初始化我的属性吗 错误代码如下所示: dojo.declare("C1", [dojo.Stateful], { _watches:[], constructor:function(){ this._watche
dojo.declare("C1",
[dojo.Stateful],
{
_watches:[],
constructor:function(){
this._watches.push("test");
}
...
}
);
dojo.declare("C2",
[dijit.MenuBarItem,C1],
{
constructor:function(){
console.debug(this._watches.length);
}
}
);
new C2();
new C2();
new C2();
new C2();
关于发生这种情况的原因是,原型上声明的复杂变量被视为“静态”成员变量(因此在所有实例之间共享)。复杂实例变量必须声明为
this.\u在成员函数中监视=[]
请参阅:发生这种情况的原因是,原型上声明的复杂变量被视为“静态”成员变量(因此在所有实例之间共享)。复杂实例变量必须声明为
this.\u在成员函数中监视=[]
见: