首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JavaScript SetInterval -传递函数指针而不是字符串

JavaScript SetInterval -传递函数指针而不是字符串
EN

Stack Overflow用户
提问于 2009-09-18 20:32:07
回答 2查看 1.1K关注 0票数 0

我有以下代码:

代码语言:javascript
运行
复制
XService.start = function() {
  setInterval("XService.poll()", XService.pollInterval); }

这很好用。然而,当我这样做时(将函数作为引用传递,而不是让字符串eval d),它就停止工作了:

代码语言:javascript
运行
复制
XService.start = function() {
  setInterval(XService.poll, XService.pollInterval); }

为什么?我做错了什么?在我的代码中没有其他的改变。我也在第二个版本中尝试了XService.poll(),但也没有成功。我读过的文档中说省略了()。

帮助?

编辑: XService.poll是一个函数;XService.pollInterval是一个数字。两者都被正确地声明和分配。

Edit2: XService代码:

代码语言:javascript
运行
复制
XService = {};
XService.pollUrl = "/Poll";
XService.pollInterval = 60000;
XService.poll = function() {
  $.get(this.pollUrl, null, null, "text"); }
XService.start = function() {
  setInterval(XService.poll, XService.pollInterval); }

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-09-18 20:35:49

在那个特定的时刻,XService.poll是一个‘函数’,'XService.pollInterval‘是一个数字吗?

编辑:由于您刚刚发布了代码..

代码语言:javascript
运行
复制
setInterval(

    function() {
        XService.poll();
    }, XService.pollInterval

);
票数 1
EN

Stack Overflow用户

发布于 2009-09-18 20:38:09

函数所绑定的内容会发生变化。

当你调用第一个函数时,你的'this‘语句被绑定到XService对象。当你调用第二个函数时,你的'this‘语句被绑定到window对象。

例如,假设我们有这样的XService和poll

代码语言:javascript
运行
复制
function poll(){ alert(this); }

如果是第一个示例,它将向XService对象发出警报,但在第二个示例中,它将向window对象发出警报。

除了mootools之外,我不知道它的语法,但是在mootoos中,你可以调用

代码语言:javascript
运行
复制
setInterval(XService.poll.bind(XService), 100)

并且它将正确调用该方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1446695

复制
相关文章

相似问题

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