首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将变量传递给javascript中的新对象?

如何将变量传递给javascript中的新对象?
EN

Stack Overflow用户
提问于 2016-01-04 14:09:38
回答 2查看 59关注 0票数 0

我希望实现这个库

代码语言:javascript
复制
var timer = new Tock({
      this.callback:  callbackFunction,
      this.interval:  10,
      this.complete:  completeFunction,
});

不过,我希望能够作出积极的呼吁:

代码语言:javascript
复制
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__,因为我不知道如何将值传递给构造函数。

我的实现是基于以下文档中的“代码”

代码语言:javascript
复制
var timer = new Tock({
  countdown: true,
  interval: 10,
  callback: someCallbackFunction,
  complete: someCompleteFunction
});
EN

回答 2

Stack Overflow用户

发布于 2016-01-04 14:27:55

我不太确定您是否掌握了JavaScript,以及它与Java到底有多大不同--它们并没有那么相似。

这是:

代码语言:javascript
复制
var timer = new Tock({
    this.callback:  makeMoreMilkshakes(),  // (Call version 2)
    this.interval:  shakeTime,
    this.complete:  bringThemToTheYard 
});

在JavaScript中不起作用。这是一个语法错误,因为不能在对象定义的左侧使用点表示法(.)。似乎你想要这样的东西:

代码语言:javascript
复制
function Tock(config) {
    var defaultCallback = callbackFunction;
    var defaultInterval = 10;
    var defaultComplete = completeFunction;

    this.callback = config.callback || defaultCallback;
    this.interval = config.interval || defaultInterval;
    this.complete = config.complete || defaultComplete;

    /**
     * This could also be written as follows, I just wanted
     * to emphasize how many people write "defaults" in JS
    this.callback = config.callback || callbackFunction;
    this.interval = config.interval || 10;
    this.complete = config.complete || completeFunction;
    */

    // Go on doing stuff....
}

var timer = new Tock({
    callback: makeMoreMilkshakes(),
    interval: shakeTime,
    complete: bringThemToTheYard
});

另外,这条线看上去不太对劲:

代码语言:javascript
复制
    callback: makeMoreMilkshakes(),

这是将makeMoreMilkshakes的结果分配给回调,而不是函数本身。如果这是有意的,那就别管这一点了。但我觉得你想:

代码语言:javascript
复制
    callback: makeMoreMilkshakes,

而不使用()

票数 3
EN

Stack Overflow用户

发布于 2016-01-05 08:31:57

我想找的解决办法是:

代码语言:javascript
复制
function startNewTimer(type) {
  var timer = new Tock({});

  var options = null;

  switch (type){
    case "first":
      options.callback = function1;
      options.interval = interval1;
      options.complete = startNewTimer(second);
      break;
    case "second":
      options.callback = function2;
      options.interval = interval2;
      options.complete = startNewTimer(third);
      break;
    case "third":
      options.callback = function3;
      options.interval = interval3;
      options.complete = startNewTimer(fourth);
      break;
    case "fourth":
      options.callback = function4;
      options.interval = interval4;
      options.complete = startNewTimer(first); //Start over from function1
      break;
  }

  timer.callback = options.callback;
  timer.interval = options.interval;
  timer.complete = options.complete;

  timer.start(0);
  out("Starting timer: ".concat(timer.callback));
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34593016

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档