//将抽象部分与它的实现部分分离,使他们都可以独立的变化
// forEach函数的实现
// 可以看到, forEach函数并不关心fn里面的具体实现. fn里面的逻辑也不会被forEach函数的改写影响.
forEach = function (ary, fn) {
for (var i = 0, l = ary.length; i < l; i++) {
var c = ary[i];
if (fn.call(c, i, c) === false) {
return false;
}
}
}