【问题标题】:How can I get to the parent scope of my inline javascript callback function?如何进入我的内联 javascript 回调函数的父范围?
【发布时间】:2011-09-12 22:13:54
【问题描述】:

我有类似的东西

function testfunction(runthis)
{
    runthis();
}

function main()
{
     var z = 15;
     testfunction(function(){ alert(z); });
}

但它认为 z 与我的内联函数不在同一范围内。在不向 testfunction 或我的内联函数添加额外参数的情况下,我的内联函数是否可以与 main 属于同一范围?我正在尝试使回调函数起作用。

编辑: 我想上面是一个糟糕的例子,因为它似乎正在工作。但是这里的实例http://pastebin.com/A1pq8dJR 不起作用,除非我添加 .call(this,parameters) 并手动设置范围(尽管我不确定这是在做什么)。我原以为这里使用的 this 指的是 imageLoaded 的范围,但它指的是 imageBoxCreate 的范围?任何人都可以解释为什么没有它就无法工作以及为什么这样做修复它?

【问题讨论】:

  • 你能更好地描述你的意图吗?由于关闭,上述工作和警报15。我不明白您所说的“属于同一范围”是什么意思。
  • 你想做什么?您将收到带有发布代码的15 警报...
  • 除非我将 .call(this,parameters) 放在函数调用之后,否则它对我不起作用。 pastebin.com/A1pq8dJR 这是代码的链接。

标签: javascript callback scope inline anonymous


【解决方案1】:

如果您只是在 javascript 中调用全局函数,this 对象将是顶级 window 全局对象。如果您在对象上使用点运算符调用函数,则this 将在函数运行时成为该对象。当您使用function.call 时,您明确指定哪个对象应该是this。我认为您可能只是在使用thisvar 时犯了一些范围错误,但是您的代码足够长并且涉及的内容足够多,因此我不会花时间为您调试它。如果您可以使用较小的代码示例来隔离您的问题,那么人们应该能够更轻松地提供帮助。

【讨论】:

    猜你喜欢
    • 2013-10-03
    • 1970-01-01
    • 1970-01-01
    • 2019-01-05
    • 1970-01-01
    • 2014-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多