0
我有一個具有可擴展轉換(用於顯示新數據面板時使用)的插件。它配備了默認的過渡方法:如何將類方法分配給默認屬性(即,來自靜態範圍的參考非靜態方法)
- 「無」 - 只需更換數據
- 「幻燈片」 - 滑出現有的面板和幻燈片在新一
- 「變臉」 - 淡出現有面板然後在新的
的各種過渡方法都存在作爲我的默認選項transitions
財產的性質淡化對象:
如
module MyPlugins
{
export class MyPlugin
{
static defaultOptions =
{
// Transition methods - can be extended to add new transitions
transitions:
{
none: function (transition): JQueryPromise<any>
{
return transition.$panel.toggle(transition.inward).promise();
},
slide: function (transition: TransitionEventParams): JQueryPromise<any>
{
return this._slide(transition);
},
fade: function (transition: TransitionEventParams): JQueryPromise<any>
{
return this._fade(transition);
}
}
}
// Greatly simplified example class method
private _fade(transition: TransitionEventParams): JQueryPromise<any>
{
var $panel = transition.$panel;
if (transition.inward)
{
return $panel.fadeIn(transition.duration).promise();
}
else
{
return $panel.fadeOut(transition.duration).promise();
}
}
}
}
在運行時的過渡方法是通過名稱調用,使用插件作爲當前this
:
promise = this.o.transitions[transition].call(this, transitionParams);
現在我的問題是:是否有可能引用類的方法,從靜態的默認值,因此不需要匿名函數包裝器
eg我希望能有這樣的:
static defaultOptions =
{
// Transition methods - can be extended to add new transitions
transitions:
{
...
slide: MyPlugin._slide,
fade: MyPlugin._fade
}
但我想不出如何引用非靜態類的方法,除了通過名稱(例如object["methodname"].call(this, params)
),從靜態對象。
關於如何簡化我的默認選項的任何想法?我應該只是讓輔助方法也是靜態的,因爲插件的價值是this
?
你可以試試'MyPlugin.prototype._slide' - 其靜態訪問「實例」方法 – Bergi
@Bergi。這是有道理的,應該發生在我身上。 Do'h!試試看吧:) :) –
@Bergi:完美。作品一種享受。請張貼答案讓我接受。 –