首先,JSON只是JavaScript对象的标记,不是对象本身被调用的标记。在JavaScript(非序列化)中,它只是一个对象。
说了这么多,似乎你想从你的验证方法中返回一个对象,然后这个方法会暴露你想要返回的各种信息。例如
function isValidPassword(pw){
var result = {
strength: 'weak',
rating: 0,
valid: false
};
// test and change result.strength, result.rating and result.valid
// based on the input
return result;
}
这是一个/或场景,所以你不能返回“真/假”并获得额外的元信息。请注意,任何对象返回会导致测试时true
结果,所以给出了上述:
var validPassword = validate.isValidPassword(null);
// always true, we have an object
if (validPassword){
}
// instead, you'd now need to check:
if (validPassword.valid){
}
(我也会不顾像isValidPassword
一个名字所暗示的真/假结果,而不是一个对象的结果使如果你正在制作一个公共库,如果你打算改变结果,我建议你重命名这个函数)
但是,你可以使用多种方法来突出你正在寻找的细节级别,这使得一个简单的isValidPassword
按预期工作,但然后添加功能,如getPasswordStrength
,getPasswordRating
,等:
function isValidPassword(pw){
// return true/false;
}
function getPasswordStrength(pw){
// return "weak","strong",etc.
}
function getPasswordRating(pw){
// return 1,2,etc.
}
这也使隐含的结果一点更清晰可读性方面,同时还提供替代品让你正在寻找的信息。
if (!validator.isValidPassword(pw)){
error = pw + ' is unacceptable (' + validator.getPasswordStrength(pw) + ')';
}
你不能只返回'FALSE'非有效的密码,一个物体与有效密码所需的参数(因为所有的对象都被解释为'在JavaScript中布尔上下文TRUE') – Saebekassebil
不要多次调用'validate.checkPassword(password)'! –