我可以使用下面的代码轻松验证是否传递了类似对象的数组以及传递的函数,注释为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 类型)是不需要的,因为该for in
语句将为我过滤掉这些。