我有一個繼承自其他2個對象的對象。DOJO中多繼承時調用超類的構造函數
我使用手動呼籲構造,因爲我想操縱我發送到超類的參數(見'-chains-'
)
define([...], function(...) {
return declare("myClass", [base1, base2],
{
"-chains-":
{
constructor: "manual"
},
constructor: function (params) {
this.inherited(arguments, [ params.x, params.y, ... ]); // just for the example
}
});
});
的問題是,我在這裏做一些錯誤的語法因爲我的超類構造函數根本沒有被調用。
當我刪除-chains-
和this.inherited...
超類構造函數被調用,但沒有我的參數操作。
找到解決方法
取而代之的this.inherited(...)
在myClass
構造我們寫
base1.prototype.constructor.apply(this, [paramsForBase1]);
base2.prototype.constructor.apply(this, [paramsForBase2]);
但還是高興聽到道場方式
聽起來很有道理..謝謝。解決方法是:) –
如果您不想手動調用所有構造函數,仍然有辦法檢索所有父項的數組,並使用'this.constructor._meta.parents'循環它們。那麼它仍然有點可重用。我編輯了我的答案與其他細節。 – g00glen00b
是的,我已經深入到道場並看到了那些成員......但我不喜歡使用任何圖書館的未申報成員,因爲有一天他們會用新版本更改/刪除它,然後我將不得不處理它再次。但非常感謝你,你有很大的幫助 –