我正在使用如下所示的模式来创建一个具有私有和公共方法的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人。感谢。
答案 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),同时请记住它是重要的是巫婆你宣布你的战争的顺序。