javascript类对象属性作为回调函数

时间:2013-01-16 10:00:47

标签: javascript class object properties callback

我正在编写一些javascript类代码,它将接受'Steps'对象的数组,并将执行步骤导航。

我打算做的是,每当调用Next()方法时,它应该在进入下一步之前调用回调函数。

pseduo代码

var mySteps = {[1,"Step1","javascriptCallbackStep1"],[2,"Step2","javascriptCallbackStep2"]};
var StepsManager.Next = function() {
  var step = getcurrentStep();
  if(step.javascriptCallbackStep1())
      //go next
}

这个javascriptCallbackStep1没有被调用,任何有关这些小细节的帮助将不胜感激。

谢谢,

[更新:回答] 我想我没有正确地问它。

我试图做的是将函数名称作为字符串传递给javascript类属性,并期望它被调用。

passedValue = "MyFunctionName";
Class.Validate = passedValue;

然后最后称它正在尝试下面的事情

Class.Validate();

Offcourse它不像Class.Validate那样工作有字符串,并且没有规范将其视为函数而不是字符串。

所以我成功尝试了

Class.Validate = function () { return window[passedValue](); };

有效。不管怎样,谢谢。

4 个答案:

答案 0 :(得分:0)

怎么样:

var mySteps = {
    [1,"Step1", javascriptCallbackStep1 ],
    [2,"Step2", javascriptCallbackStep2 ]
};

var StepsManager.Next = function() {
    var step = getcurrentStep();

    if(step[2]())
    //go next

答案 1 :(得分:0)

您的step是一个数组,并且没有javascriptCallbackStep1方法。试试这个:

var mySteps = {
    {id:1,name:"Step1",callback:javascriptCallbackStep1},
    {id:2,name:"Step2",callback:javascriptCallbackStep2}
};
var StepsManager.Next = function() {
  var step = getcurrentStep();
  if(step.callback && step.callback())
      //go next
}

答案 2 :(得分:0)

我想我没有正确地问它。

我试图做的是将函数名称作为字符串传递给javascript类属性,并期望它被调用。

passedValue = "MyFunctionName";
Class.Validate = passedValue;

然后最后称它正在尝试下面的事情

Class.Validate();

Offcourse它不像Class.Validate那样工作有字符串,并且没有规范将其视为函数而不是字符串。

所以我成功尝试了

Class.Validate = function () { return window[jsValidationCallBack](); };

有效。感谢

答案 3 :(得分:0)

Javascript需要被赋予对执行它的函数的引用。传递函数本身或执行@paul所建议的是编写可预测/可靠行为的代码的最可靠方法。

您不应该将函数名称作为字符串传递,但要知道您可以:

function someFunction(name) { return "hello " + name; }
var fn = window["someFunction"]; 
console.log(fn("test"))

窗口更改为功能所在的命名空间