1

我正在使用如下所示的模式来创建一个具有私有和公共方法的 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 人。谢谢。

4

1 回答 1

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),还要记住顺序很重要在女巫中,您声明了您的变量。

于 2012-06-25T17:28:06.690 回答