Dojo.hitch立即打电话:确认我的怀疑

时间:2013-07-31 14:37:01

标签: javascript dojo

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

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

令我感到奇怪的部分是最后的两个括号。他们显然没有为以后创建这个功能 - 他们现在只是调用它。我明显的想法是,这可以缩短为:

iamanamespace.doSomething();

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

我可以与任何曾经使用过dojo的人确认一下,如果有的话,可能会要求立即使用故障,而不是按照正常的,老式的方式进行操作吗?

1 个答案:

答案 0 :(得分:1)

我没有使用过Dojo,但从the source看,我可以告诉你,你是对的。当您知道参数时,您应该缩短呼叫时间。

但是可能有一个原因只能使用hitch:如果你想同时允许函数和方法名称,那么立即调用一个挂起的函数可能比编写类似

的函数更短
if (typeof fn == "string")
    fn = (context || global)[fn];
if (typof fn == "function")
    fn.call(context);
else
    throw "not a function";