源码实现原理:主要用到了arguemnts接收实参,call改变this指向
some源码
Array.prototype.mySome = function() {
var fn = arguments[0];
var arr = this;
//短路运算,如果是五大假值,则this指向window
var target = arguments[1] || window;
for (var i = 0; i < arr.length; i++) {
var boolean = fn.call(target, arr[i], i, i++)
if (boolean) {
return true;
}
}
return false
}
every源码
Array.prototype.myEvery = function() {
var fn = arguments[0];
var arr = this;
var target = arguments[1] || window;
for (var i = 0; i < arr.length; i++) {
var boolean = fn.call(target, arr[i], i, arr)
if (!boolean) {
return false;
}
}
return true
}