我正在尝试创建一个这样的简单页面闭包:
page = function () {
// define functions
function clickAdd() {
//..
return "55"
};
var that = {};
// object to return
that.clickAdd = clickAdd;
return that;
}
想法是,我应该可以调用点击添加,然后......
page.clickAdd();
但是,我得到page.clickAdd is not a function.
我做错了什么?
答案 0 :(得分:2)
问题是page
是函数,返回具有clickAdd
属性的对象。您必须首先调用该功能:
page() // Call page ...
.clickAdd(); // which returns an object with a clickAdd() function
如果您不再需要保留page
函数,您也可以调用匿名函数并将返回值设置为page
:
page = (function () {
return {
clickAdd: function ()
{
return "55";
}
};
})();
现在,调用我们的匿名函数(注意最后的()
),它返回一个带有clickAdd
函数的对象,该对象设置为变量page
。我们现在可以打电话:
page.clickAdd();
实质上,page
现在就像静态类一样。
您还可以考虑将该函数作为对象文字的属性:
var page = {
clickAdd: function ()
{
return "55";
}
};
page.clickAdd();
答案 1 :(得分:1)
您只需执行外部函数即可将其返回值存储在page
。
page = function () {
// define functions
function clickAdd() {
//..
return "55"
};
var that = {};
// object to return
that.clickAdd = clickAdd;
return that;
}()
答案 2 :(得分:0)
页面是您的案例中的函数,因此您必须先调用它:
page().clickAdd();