这可能很快。根据我的理解,dojo.hitch()
函数对于为您提供一个函数回调很有用,该函数回调将始终在您需要的命名空间(第一个参数)中调用。但是,我已经看到了许多调用语法,如下所示:
dojo.hitch(iamanamespace, iamanamespace.doSomething)();
令我感到奇怪的部分是最后的两个括号。他们显然没有为以后创建这个功能 - 他们现在只是调用它。我明显的想法是,这可以缩短为:
iamanamespace.doSomething();
我只是在心不在焉地做这个替换,认为这是某人对this
引用过于谨慎的结果,但后来我发现我能找到一些这样的实例。 “dojox”模块,甚至dojo / _base / lang中的一个模块确实改变了命名空间上下文,但仍然可以使用“.call()
”。
我可以与任何曾经使用过dojo的人确认一下,如果有的话,可能会要求立即使用故障,而不是按照正常的,老式的方式进行操作吗?
答案 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";