首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >javascript类对象属性作为回调函数

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

Stack Overflow用户
提问于 2013-01-16 10:00:47
回答 4查看 125关注 0票数 0

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

我计划做的是,无论何时调用Next()方法,它都应该在下一步之前调用回调函数。

pseduo码

代码语言:javascript
复制
var mySteps = {[1,"Step1","javascriptCallbackStep1"],[2,"Step2","javascriptCallbackStep2"]};
var StepsManager.Next = function() {
  var step = getcurrentStep();
  if(step.javascriptCallbackStep1())
      //go next
}

这个javascriptCallbackStep1是不会被调用的,任何关于这个细节的帮助都将受到极大的感谢。

谢谢,

更新:回答,我想我问得不对。

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

代码语言:javascript
复制
passedValue = "MyFunctionName";
Class.Validate = passedValue;

最后,由于打电话,它尝试了如下所示

代码语言:javascript
复制
Class.Validate();

当然,它并不像在Class.Validate中那样工作--有字符串,也没有规范将它当作函数而不是字符串来处理。

所以我成功地尝试了

代码语言:javascript
复制
Class.Validate = function () { return window[passedValue](); };

啊,真灵。不管怎样,谢谢。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-01-17 09:20:24

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

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

代码语言:javascript
复制
function someFunction(name) { return "hello " + name; }
var fn = window["someFunction"]; 
console.log(fn("test"))

将窗口更改为函数所在的命名空间

票数 0
EN

Stack Overflow用户

发布于 2013-01-16 10:08:32

不如:

代码语言:javascript
复制
var mySteps = {
    [1,"Step1", javascriptCallbackStep1 ],
    [2,"Step2", javascriptCallbackStep2 ]
};

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

    if(step[2]())
    //go next
票数 0
EN

Stack Overflow用户

发布于 2013-01-16 10:09:07

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

代码语言:javascript
复制
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
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14355679

复制
相关文章

相似问题

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