首先,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)'! –