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:完美。作品一种享受。请张贴答案让我接受。 –