0

这可能是一个快速的。据我了解,该dojo.hitch()函数对于为您提供一个函数回调很有用,该回调将始终在您需要的命名空间中调用(第一个参数)。但是,我看到了许多调用语法,如下所示:

dojo.hitch(iamanamespace, iamanamespace.doSomething)();

让我感到奇怪的是最后的两个括号。他们显然没有为以后创建这个函数——他们现在只是在调用它。我明显的想法是,这可以缩短为:

iamanamespace.doSomething();

我只是心不在焉地做这个替换,认为这是某人对this引用过于小心的结果,但后来我发现我能够在“dojox”模块中找到一些这样的实例,甚至dojo/_base/lang 内部的一个确实改变了命名空间上下文,但仍然可以只使用“ .call()”。

我能否与使用道场一段时间的任何人确认一下,如果有的话,可能需要立即使用挂钩,而不是按照正常的老式方式进行操作?

4

1 回答 1

1

我没有使用过 Dojo,但是通过查看源代码,我可以告诉您您是对的。当你知道参数时,你应该缩短调用。

不过,可能有一个只使用的原因hitch:如果您想同时允许函数和方法名称,那么立即调用一个挂接的函数可能比编写类似的东西更短

if (typeof fn == "string")
    fn = (context || global)[fn];
if (typof fn == "function")
    fn.call(context);
else
    throw "not a function";
于 2013-07-31T15:35:19.170 回答