まず、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/false」を返して追加のメタ情報を取得することはできません。返されたオブジェクトは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) + ')';
}