这个swipe.js函数返回了什么?

时间:2013-07-24 17:50:00

标签: javascript jquery function dom

此代码存在于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
}

返回的值是否为数组?数组列表?比如说我实例化了一个新的滑动对象window['aNewSwipeObject'] = Swipe($theDOMElement);,我调用了这个window['aNewSwipeObject'].setup()的setup函数调用了什么setup()?返回上面的setup(),或Swipe()函数返回的匿名函数内的setup()?

3 个答案:

答案 0 :(得分:3)

它返回一个对象文字。对象中的每个键都是一个函数。

这通常用于创建函数的命名空间,通过将它们放在函数作用域中,函数将共享从命名空间继承的本地作用域。

例如,

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

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

})();

答案 1 :(得分:1)

它返回方法,因此对象可以使用它们

答案 2 :(得分:1)

它返回一个对象,其中每个属性都是对匿名函数的引用。

这是封装/隐藏数据的便捷方式。私有函数存在于Swipe函数中(您可以在JavaScript中嵌套函数),返回的对象文字的各个属性仅仅是对调用这些私有函数的匿名函数的引用。

这样,只有Swipe函数才能访问这些私有的内部函数。

当您在对象上调用setup时,它会调用公共函数(由对象的setup属性引用),而该函数又调用 internal { {1}}仅在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() { ... } }; })(); 初始化API,但在此模式中,myAPI.init(options)实际上是一个单例(通常是您想要的,除非您希望维持每个状态 - 实例基础)。