1

このコードは swipe.js ライブラリにあります。カスタムしてみます。リターンの前のコメントには「Swipe API を公開する」と書かれていますが、それが何を意味するのかわかりません。

function Swipe(container, options) {

...

//everything that makes the library work, including a setup() function

...


  //expose the Swipe API
  return {
    setup: function() {

      setup();

    },
    slide: function(to, speed) {

      // cancel slideshow
      stop();

      slide(to, speed);

    },
    prev: function() {

      // cancel slideshow
      stop();

      prev();

    },
    next: function() {

      // cancel slideshow
      stop();

      next();

    },...some more stuff
}

戻り値は配列ですか? 配列リスト?たとえば、新しいスワイプ オブジェクトをインスタンス化し、setup() が呼び出されるwindow['aNewSwipeObject'] = Swipe($theDOMElement);ような setup 関数を呼び出すとします。window['aNewSwipeObject'].setup()戻り値の上の setup() または Swipe() 関数の戻り値にある無名関数内の setup() ?

4

3 に答える 3

3

オブジェクトリテラルを返します。オブジェクトのすべてのキーは関数です。

これは、関数の名前空間を作成するためによく使用され、それらを関数スコープに配置することで、関数は名前空間から継承されたローカル スコープを共有します。

例えば、

var Namespace = (function() {
    var helperFunction = function() { ... }
    var localData = // ...

    return {
       publicFunction1 : function() { ... },
       publicFunction2 : function() { ... },
       publicFunction3 : function() { ... }
    }

})();
于 2013-07-24T17:52:07.000 に答える
1

オブジェクトがメソッドを使用できるようにメソッドを返します

于 2013-07-24T17:51:53.570 に答える
1

各プロパティが無名関数への参照であるオブジェクトを返しています。

これは、データをカプセル化/非表示にする便利な方法です。プライベート関数は関数内に存在しSwipe(JavaScript では関数をネストできます)、返されるオブジェクト リテラルの個々のプロパティは、これらのプライベート関数を呼び出す無名関数への単なる参照です。

このようにして、関数のみがSwipeそれらのプライベートな内部関数にアクセスできます。

オブジェクトを呼び出すsetupと、パブリック関数 (setupオブジェクトのプロパティによって参照される) が呼び出され、次に、関数内でのみ使用できる内部 関数が呼び出されます。setup()Swipe

これをクリアするものは次のとおりです。

function myAPI(options) {

    function privateFunction1() {
       ...
    }

    function privateFunction2() {
       ...
    }

    function privateFunction3() { 
       ...
    }

    return {
        publicFunction1: privateFunction1,
        publicFunction2: function() {
            //some extra code
            privateFunction2();
        },
        publicFunction3: function() {
            ...
        }
    };
}

これで、次のようにして個々のインスタンスを取得できます。

var myAPIObject = myAPI(options);

しかし、あなたが見る別のパターンは次のとおりです。

var myAPI = (function() {

    function privateFunction1() {
       ...
    }

    function privateFunction2() {
       ...
    }

    function privateFunction3() { 
       ...
    }

    return {
        init: function(options) {
            //do something with options
        },
        publicFunction1: privateFunction1,
        publicFunction2: function() {
            //some extra code
            privateFunction2();
        },
        publicFunction3: function() {
            ...
        }
    };
})();

このインスタンスではmyAPI.init(options)、API を初期化するために行いますが、このパターンmyAPIでは事実上シングルトンです (インスタンスごとに状態を維持したい場合を除き、通常はこれが必要です)。

于 2013-07-24T17:51:54.967 に答える