0

これはおそらく速いものです。私が理解していることから、このdojo.hitch()関数は、必要な名前空間 (最初の引数) で常に呼び出される関数コールバックを提供するのに役立ちます。ただし、次のような多くの呼び出し構文を見てきました。

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

私を奇妙に思う部分は、最後の2つの括弧です。彼らは明らかにこの関数を後で作成しているのではなく、ただ今呼び出しているだけです。私の明らかな考えは、これは次のように短縮できるということです。

iamanamespace.doSomething();

誰かが参照に注意しすぎた結果だと思って、ぼんやりとこの置換を行っていたのですthisが、その後、「dojox」モジュールでこれのいくつかのインスタンスを見つけることができたことがわかりました。名前空間のコンテキストを変更した dojo/_base/lang 内の 1 つですが、" .call()" をそのまま使用できた可能性があります。

道場をしばらく使ったことのある人に確認していただけますか?

4

1 に答える 1

1

私は Dojo を使ったことがありませんが、ソースを見るとあなたの言う通りだと言えます。引数がわかっている場合は、呼び出しを短くする必要があります。

ただし、使用する理由は 1 つだけあり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 に答える