jquery的each()方法实现

来源:互联网 发布:js根据id获取div 编辑:程序博客网 时间:2024/05/17 21:48

jquery的实现方法

    var each = function (obj, callback) {        var length, i = 0;        if (Array.isArray(obj)) {            length = obj.length;            for (; i < length; i++) {                if (callback.call(obj[i], i, obj[i]) === false) {                    break;                }            }        } else {            for (i in obj) {                if (callback.call(obj[i], i, obj[i]) === false) {                    break;                }            }        }    }

underscore.js的实现

    var optimizeCb = function (func, context, argCount) {        if (context === void 0) return func;        switch (argCount) {            case 1:                return function (value) {                    return func.call(context, value);                };            case null:            case 3:                return function (value, index, collection) {                    return func.call(context, value, index, collection);                };            case 4:                return function (accumulator, value, index, collection) {                    return func.call(context, accumulator, value, index, collection);                };        }        return function () {            return func.apply(context, arguments);        }    };  _.each = _.forEach = function (obj, iteratee, context) {        iteratee = optimizeCb(iteratee, context);        var i, length;        if (isArrayLike(obj)) {            for (i = 0, length = obj.length; i < length; i++) {                iteratee(obj[i], i, obj);            }        } else {            var keys = _.keys(obj);            for (i = 0, length = keys.length; i < length; i++) {                iteratee(obj[keys[i]], keys[i], obj);            }        }        return obj;    }; var isArrayLike = function (collection) {        var length = getLength(collection);        return typeof length == 'number' && length >= 0 && length <= MAX_ARRAY_INDEX;    };
原创粉丝点击