2012-05-29 138 views
4

我試圖做一個Dojo小部件(該dojox.mobile.ListItem,從祖父母dijit._WidgetBase派生)的定製子類。呼叫祖父母法this.inherited

我想要從父級重寫和修改的方法之一包含對this.inherited(arguments)的調用。這意味着我不能直接將其直接複製到我的子類中(因爲我的方法中的this.inherited調用將調用父類的方法,而不是祖父母的方法,就像它在原始上下文中那樣)。我不想調用父類的方法,因爲我故意調整它的作用(我想創建不同的DOM元素以創建ListItem)。但我想保留標準的祖父母級功能,如ListItem

所以我想直接在當前對象上調用祖父類的方法。有沒有辦法做到這一點?如果不是,我該如何解決這個問題?

+0

我目前正在使用這種機制'dijit._WidgetBase.prototype.methodName()'提琴,但不知道這個好處/陷阱... –

回答

3

使用dijit._WidgetBase.prototype.methodName()將失去子部件的範圍,這可能會或可能沒有後果。您應該使用

dijit._WidgetBase.prototype.methodName.apply(this, arguments)

這裏是爲了顯示我的意思

http://jsfiddle.net/cswing/4nGCH/