3

私はajax呼び出しのためにグーグルクロージャーライブラリを調べていました、そして私は次のような例を経験しました:

goog.events.listen(request, "complete", function(){
  if (request.isSuccess()) {
    // do something cool
   } else {
     // display an apologize message
   }
});

次のようなjqueryの例とは対照的です。

$.ajax({url: url, success: function () { }, error: function () { }});

私はグーグルクロージャーポップアップをもっとたくさん見ていますが、この場合の長所と短所は何でしょうか?jqueryライブラリの呼び出しは、このようなajax関連の呼び出しの方がはるかに簡単に思えます。

4

1 に答える 1

5

クロージャーのサンプルが不完全です。サンプルの直前にXhrIoインスタンスを作成して呼び出したと思いますsend()

投稿したjQueryサンプルと同等のより単純なClosureが必要な場合は、staticを使用できますXhrIo.send()。次のようになります。

goog.net.XhrIo.send(
  url,
  function(event) {
    var xhr = event.target;
    if (xhr.isSuccess()) {
      // do something cool
    } else {
      // display an apologize message
    }
  });

それは確かにjQueryバージョンよりも不格好です。一般に、Closureはオブジェクト指向プログラミングを念頭に置いて設計されています(ほとんどが静的関数であるjQueryとはまったく対照的です)。これは、JSコードをオブジェクト指向の方法で作成するかどうかに応じて、適切かどうかがわかります。

この特定のケースではXhrIo、複数のリクエストに再利用するオブジェクトを作成すると、Closureから小さな利点が得られる可能性があります(たとえば、setTimeoutInterval()すべてのリクエストに使用できるようにすることができます)。メモリを気にする場合は、クロージャを使用すると、ガベージコレクションをより明示的に制御できる場合があります。

于 2013-01-11T00:54:28.080 に答える