Dojo 1.6 hitch()范围内的“this”在require语句中

时间:2013-01-10 17:18:14

标签: javascript dojo scope require execution

我的dojo应用程序遇到了一个奇怪的问题。它只是关于范围和关联对象本身。以下代码

function(data) {
        console.info(this); // [I]
        var fun = require(["dojo/Deferred"], function(Deferred) {
            console.info(this); // [II]
        });

        lang.hitch(this, fun());
    }

创建此输出

Object{...} // from [I]
Window index.php [II]

所需的输出必须是Object的2倍。我以为我理解了搭便车机制,但是通过调用lang.hitch(this,fun());在我看来,“这个”是由[I]打印的对象。

我希望你们能帮忙!

提前致谢!

1 个答案:

答案 0 :(得分:3)

你想要做的是阻止回调函数的范围:

function(data) {
        console.info(this); // [I]
        var fun = require(["dojo/Deferred"], lang.hitch(this,function(Deferred) {
            console.info(this); // [II]
        }));
}

而不是在评估lang.hitch(this, fun());

之后挂钩到require函数的返回结果