首先,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) + ')';
}