Javascript 在闭包中调用函数

Javascript 在闭包中调用函数,javascript,Javascript,我正试图用这种简单的方式结束页面: page = function () { // define functions function clickAdd() { //.. return "55" }; var that = {}; // object to return that.clickAdd = clickAdd; return that; } 我的想法是,我应该能够调用clickA

我正试图用这种简单的方式结束页面:

page = function () {    

    // define functions

    function clickAdd() {
        //..
        return "55"
    };

    var that = {};

    // object to return
    that.clickAdd = clickAdd;

    return that;
}
我的想法是,我应该能够调用clickAdd作为

page.clickAdd();
page().clickAdd();
但是,我得到了
页面。clickAdd不是一个函数。


我做错了什么?

您只需执行outer函数即可将其返回值存储在
页面中

page = function () {    

    // define functions

    function clickAdd() {
        //..
        return "55"
    };

    var that = {};

    // object to return
    that.clickAdd = clickAdd;

    return that;
}()

您只需执行outer函数即可获得存储在
页面中的返回值

page = function () {    

    // define functions

    function clickAdd() {
        //..
        return "55"
    };

    var that = {};

    // object to return
    that.clickAdd = clickAdd;

    return that;
}()

您只需执行outer函数即可获得存储在
页面中的返回值

page = function () {    

    // define functions

    function clickAdd() {
        //..
        return "55"
    };

    var that = {};

    // object to return
    that.clickAdd = clickAdd;

    return that;
}()

您只需执行outer函数即可获得存储在
页面中的返回值

page = function () {    

    // define functions

    function clickAdd() {
        //..
        return "55"
    };

    var that = {};

    // object to return
    that.clickAdd = clickAdd;

    return that;
}()

问题在于
page
是函数,它返回一个具有
clickAdd
属性的对象。您必须首先调用该函数:

page() // Call page ...
  .clickAdd(); // which returns an object with a clickAdd() function
如果不再需要保留
页面
函数,也可以调用匿名函数并将返回值设置为
页面

page = (function () {    
    return {
       clickAdd: function ()
       {
          return "55";
       }
    };
})();
现在,我们调用了匿名函数(注意末尾的
()
),它返回一个带有
clickAdd
函数的对象,该函数设置为变量
页面
。我们现在可以打电话:

page.clickAdd();
本质上,
page
现在就像一个静态类

您还可以考虑将函数设为对象文字的属性:

var page = {
   clickAdd: function ()
   {
      return "55";
   }
};

page.clickAdd();

问题在于
page
是函数,它返回一个具有
clickAdd
属性的对象。您必须首先调用该函数:

page() // Call page ...
  .clickAdd(); // which returns an object with a clickAdd() function
如果不再需要保留
页面
函数,也可以调用匿名函数并将返回值设置为
页面

page = (function () {    
    return {
       clickAdd: function ()
       {
          return "55";
       }
    };
})();
现在,我们调用了匿名函数(注意末尾的
()
),它返回一个带有
clickAdd
函数的对象,该函数设置为变量
页面
。我们现在可以打电话:

page.clickAdd();
本质上,
page
现在就像一个静态类

您还可以考虑将函数设为对象文字的属性:

var page = {
   clickAdd: function ()
   {
      return "55";
   }
};

page.clickAdd();

问题在于
page
是函数,它返回一个具有
clickAdd
属性的对象。您必须首先调用该函数:

page() // Call page ...
  .clickAdd(); // which returns an object with a clickAdd() function
如果不再需要保留
页面
函数,也可以调用匿名函数并将返回值设置为
页面

page = (function () {    
    return {
       clickAdd: function ()
       {
          return "55";
       }
    };
})();
现在,我们调用了匿名函数(注意末尾的
()
),它返回一个带有
clickAdd
函数的对象,该函数设置为变量
页面
。我们现在可以打电话:

page.clickAdd();
本质上,
page
现在就像一个静态类

您还可以考虑将函数设为对象文字的属性:

var page = {
   clickAdd: function ()
   {
      return "55";
   }
};

page.clickAdd();

问题在于
page
是函数,它返回一个具有
clickAdd
属性的对象。您必须首先调用该函数:

page() // Call page ...
  .clickAdd(); // which returns an object with a clickAdd() function
如果不再需要保留
页面
函数,也可以调用匿名函数并将返回值设置为
页面

page = (function () {    
    return {
       clickAdd: function ()
       {
          return "55";
       }
    };
})();
现在,我们调用了匿名函数(注意末尾的
()
),它返回一个带有
clickAdd
函数的对象,该函数设置为变量
页面
。我们现在可以打电话:

page.clickAdd();
本质上,
page
现在就像一个静态类

您还可以考虑将函数设为对象文字的属性:

var page = {
   clickAdd: function ()
   {
      return "55";
   }
};

page.clickAdd();

page在您的案例中是一个函数,因此您必须首先调用它:


page在您的案例中是一个函数,因此您必须首先调用它:


page在您的案例中是一个函数,因此您必须首先调用它:


page在您的案例中是一个函数,因此您必须首先调用它: