JavaScript SetInterval-传递函数指针而不是字符串
我有以下代码:JavaScript SetInterval-传递函数指针而不是字符串,javascript,Javascript,我有以下代码: XService.start = function() { setInterval("XService.poll()", XService.pollInterval); } XService.start = function() { setInterval(XService.poll, XService.pollInterval); } XService = {}; XService.pollUrl = "/Poll"; XService.pollInterval
XService.start = function() {
setInterval("XService.poll()", XService.pollInterval); }
XService.start = function() {
setInterval(XService.poll, XService.pollInterval); }
XService = {};
XService.pollUrl = "/Poll";
XService.pollInterval = 60000;
XService.poll = function() {
$.get(this.pollUrl, null, null, "text"); }
XService.start = function() {
setInterval(XService.poll, XService.pollInterval); }
这很有效。但是,当我这样做时(将函数作为引用传递,而不是让字符串eval'd),它会停止工作:
XService.start = function() {
setInterval("XService.poll()", XService.pollInterval); }
XService.start = function() {
setInterval(XService.poll, XService.pollInterval); }
XService = {};
XService.pollUrl = "/Poll";
XService.pollInterval = 60000;
XService.poll = function() {
$.get(this.pollUrl, null, null, "text"); }
XService.start = function() {
setInterval(XService.poll, XService.pollInterval); }
为什么??我做错了什么?我的代码中没有其他更改。我还在第二个版本中尝试了XService.poll(),但也没有骰子。我读过的文档中说省略()项
帮忙
编辑:XService.poll是一个函数;XService.pollInterval是一个数字。两者都已正确声明和分配
Edit2:XService代码:
XService.start = function() {
setInterval("XService.poll()", XService.pollInterval); }
XService.start = function() {
setInterval(XService.poll, XService.pollInterval); }
XService = {};
XService.pollUrl = "/Poll";
XService.pollInterval = 60000;
XService.poll = function() {
$.get(this.pollUrl, null, null, "text"); }
XService.start = function() {
setInterval(XService.poll, XService.pollInterval); }
XService.poll是“函数”还是“XService.pollInterval”是那个特定时间的数字
编辑:因为你刚刚发布了代码
setInterval(
function() {
XService.poll();
}, XService.pollInterval
);
函数绑定的内容会发生变化 当调用第一个时,您的“this”语句绑定到XService对象。 调用第二个时,“this”语句将绑定到窗口对象 例如,假设我们有这样一个带有poll的XService
function poll(){ alert(this); }
如果是第一个示例,它将向XService对象发出警报,但在第二个示例中,它将向window对象发出警报
除了在mootools中,我不知道语法,但在mootoos中,您可以调用
setInterval(XService.poll.bind(XService), 100)
它会正确调用该方法我们能看到XService的全部代码吗?这可能与它的定义方式、实时/运行时行为以及eval的不同执行方式有关!按照CMS所说的做将会起作用,并且会修复绑定问题(使用匿名函数)