JavaScript私有方法,异步访问

时间:2012-06-25 17:11:34

标签: javascript

我正在使用如下所示的模式来创建一个具有私有和公共方法的javascript库。我们的想法是,包含此库的页面将调用MYLIB.login(),并在用户单击“确定”或“取消”时提供两个函数。

var MYLIB = function() {
    //  private data and functions
    var showForm = function() {
        //  create and show the form
    };
    var onOK = function() {
        //  hide the form, do some internal stuff, then…
        okFunction();
    };
    var onCancel = function() {
        //  hide the form, do some internal stuff, then...
        cancelFunction();
    };

    var okFunction = null;
var cancelFunction = null;

    //  public functions 
    return {
        login : function(okf, cancelf) {
           okFunction = okf;
           calcelFunction = cancelf;
           showForm();
        },
    };  
}();

我的问题是如何获取表单中的按钮来调用内部函数onOK和onCancel,它们是私有的。按钮看起来像这样:

<button onclick="onOK();">OK</button>
<button onclick="onCancel();">Cancel</button>

如果我将这些功能公之于众,我可以让它发挥作用,但我也可以公开一切。我怎么能做我想做的事?来自C ++ / Java背景,试图成为一个优秀的OO人。感谢。

1 个答案:

答案 0 :(得分:0)

有很多方法可以解决它,但是从我看到的onOK和onCancel必须是公开的,因为你需要从课外访问它们。你可以创建一个公共函数来处理这些行为,如:

this.setStatus = function(status){
  // check if the conection is on before calling the functions and stuff like that
  if(status) onCancel();
  else onOK();
}

它实际上取决于你想在日志运行中使用它的位置。 Javascript提供了大量的OOP内容,但与C ++ / Java有很大不同。

提示:如果您想使用私有函数,我建议您使用priviledgiat函数来处理私有方法(http://cuzztuts.blogspot.ro/search/label/oop),同时请记住它是重要的是巫婆你宣布你的战争的顺序。