としてコメントされている以下のコードを使用して、配列のようなオブジェクトが渡されたことと、関数が渡されたことを簡単に検証できますvalidation here
。
$P.someKey = function (obj, func, con) {
var key;
// prevent type errors
// must be !(null or undefined) and a function
if (obj != null || typeof func !== 'function') { // validation here
return false;
}
for (key in obj) {
if (obj.hasOwnProperty(key)) {
// if the function passes back a truthy value,
// the loop will terminate
if (func.call(con, obj[key], key, obj)) {
return true;
}
}
}
return true;
};
一貫性を保つために、正しいコンテキスト値が渡されたことを検証する方法はありますか、それとも call() メソッドがこれを行うため、これは必要ありませんか?
私がチェックすることについて考えるほどobj != null
(nullとundefined、プロパティを持たない2つのJSタイプのみをチェックします)は不要であり、for in
ステートメントはこれらを除外します。