我可以轻松验证是否传递了类似对象的数组,以及使用下面的代码传递函数,注释为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,只有两个没有属性的JS类型),b.c.也是不需要的。 for in
语句将为我过滤掉这些内容。