【发布时间】:2016-01-04 14:09:38
【问题描述】:
我希望实现this lib:
var timer = new Tock({
this.callback: callbackFunction,
this.interval: 10,
this.complete: completeFunction,
});
但是,我希望能够进行动态调用:
var milkshake = my_milkshakes[next];
var timer = new Tock({
this.callback: makeMoreMilkshakes(), // (Call version 2)
this.interval: shakeTime,
this.complete: bringThemToTheYard
});
function bringThemToTheYard(){
return setNextCallbackFunction();
}
这里的问题似乎是我无法超出初始化范围。在 Java 中,我可以轻松地将参数传递给构造函数,除非需要函数句柄。
抽象是指代码不能通过引用重用,但这是公认的松散术语。
我的目标是初始化单个 new 计时器调用以创建新计时器。我需要 5 个不同的计时器。理想情况下,一个定时器就足够了,因为定时器是按线性时间启动和停止的。
我的主要问题是我不能(例如)将this.interval 设置为动态变量x,因为我不知道如何将值传递给构造函数。
我的实现基于以下文档中的"code":
var timer = new Tock({
countdown: true,
interval: 10,
callback: someCallbackFunction,
complete: someCompleteFunction
});
【问题讨论】:
-
1) Javascript 没有“抽象构造函数”的概念,不清楚你的意思。 2)
this.callback作为对象的键没有多大意义,那应该是什么? 3) 目前尚不清楚您要达到的目标。 -
">我的目标是初始化使用单个新计时器调用来创建新计时器。"所以你需要一种工厂函数?
-
OOP 中的“Abstract”通常与“in place”有着非常非常不同的含义;你最好避免使用这个词以减少混淆。
{ this.callback: .. }仍然是语法错误。 -
我只是重申@deceze所说的话,很难理解你的问题到底是什么。
-
关于您的编辑:当您执行
new Tock({...})时,您将一个值传递给构造函数,即包含各种属性的 object literal。但是您的对象文字格式错误,因为键只能是字符串文字,而不是this.something。
标签: javascript constructor abstract