[英]How to call one method from another method in javascript?
我想知道在“ datevalidate”方法中为“ Deval”和“ Reval”变量分配值的方式是否正确?
如果您注意到我的代码,我将通过指定整个指向方法的链来赋值,例如' x9.validator.check_element_val() '。 我可以打个不太明确的电话吗? 由于我试图访问这些变量的直接词法范围之外的函数, 是否有某种方法可以使用闭包更好地实现此目的 ?
如果不适合当前情况,请更正我对闭包的理解。
var x9 = {} || x9;
x9.validator = {
mode : 1,
check_element_val : function(el){
var returnval = 0;
if (el.value == 0 || el.value == undefined || el.value == null || el.value == ''){
returnval = 0;
}else{
returnval = 1;
}
return returnval;
},
datevalidate : function(mode, dep_el, ret_el){
var returnobj = new Object();
if (mode == 1){
Deval = x9.validator.check_element_val(dep_el);
Reval = x9.validator.check_element_val(ret_el);
if (Deval == 0 || Reval == 0){
returnobj.returnval = false;
}else{
returnobj.returnval = true;
}
}
return JSON.stringify(returnobj);
}
};
提前致谢。
也许您将从Module模式中受益(请参阅此简单示例 )。 您可以执行以下操作:
var x9 = {} || x9;
x9.validator = (function() {
var mode = 1;
var check_element_val = function(el){
var returnval = 0;
if (el.value == 0 || el.value == undefined || el.value == null || el.value == ''){
returnval = 0;
}else{
returnval = 1;
}
return returnval;
};
var datevalidate = function(mode, dep_el, ret_el){
var returnobj = new Object();
if (mode == 1){
Deval = check_element_val(dep_el);
Reval = check_element_val(ret_el);
if (Deval == 0 || Reval == 0){
returnobj.returnval = false;
}else{
returnobj.returnval = true;
}
}
return JSON.stringify(returnobj);
}
return {
mode : mode,
check_element_val : check_element_val,
datevalidate : datevalidate
};
})();
附带说明一下,我不确定您要使用mode
变量做什么,但是请注意,除非您自己提供它作为参数,否则datevalidate
函数将不会使用它,例如:
var validation = x9.validator.datevalidate(x9.validator.mode,someValue1,someValue2);
如果要让函数仅使用验证器中的mode
变量,请从参数列表中删除mode
。 但是,如果要保持提供不同模式的能力,可以编写一个附加功能。 例如:
var datevalidate_default_mode = function(dep_el,ret_el) {
return datevalidate(mode, dep_el, ret_el);
};
我认为,每次您要使用默认值时,它都比将x9.validator.mode
添加到datevalidate
函数看起来更好。 这样,您甚至可以从模块输出中删除mode
。 无论哪种方式,如果要添加新的公共功能,请不要忘记在模块输出中也将其公开!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.