我有类似的东西
function testfunction(runthis)
{
runthis();
}
function main()
{
var z = 15;
testfunction(function(){ alert(z); });
}
然而,它并不认为z与我的内联函数在同一范围内。如果不向testfunction或我的内联函数添加其他参数,我的内联函数是否有任何方法属于与main相同的范围?我正在尝试使回调函数正常工作。
编辑:以上我想象的是一个糟糕的例子,因为它似乎正在发挥作用。但是这里的实例http://pastebin.com/A1pq8dJR不起作用,除非我添加.call(this,参数)并手动设置范围(虽然我不确定这是做什么的)。我本以为这用过那里会引用imageLoaded的范围,但是它指的是imageBoxCreate的范围?任何人都可以解释为什么没有它就无法工作以及为什么这样做会修复它?
答案 0 :(得分:3)
如果您只是在javascript中调用全局函数,this
对象将成为顶级window
全局对象。如果使用对象上的点运算符调用函数,则this
将在函数运行时成为该对象。使用function.call
时,您明确指定哪个对象应为this
。我认为您可能只是在使用this
和var
的方式上犯了一些范围错误,但是您的代码足够长且涉及到足够多,我不打算花时间为您调试它。如果您可以使用较小的代码示例来解决问题,那么人们应该能够更轻松地提供帮助。