zoukankan      html  css  js  c++  java
  • jQuery源码笔记——四

    each()实现

    var jQuery = function( selector, context ) {
            return new jQuery.fn.init( selector, context );
    };
    jQuery.fn = jQuery.prototype = {
        selector: "",
        init: function(selector){
            //仍然是mini的选择器。
            var result = document.querySelectorAll(selector);
            for(var i = 0;i < result.length;i++){
                this[i] = result[i] 
            }
            this.length = result.length;
        },
        //指定操作对象为this
        each: function(callback){
            return jQuery.each(this,callback)
        },
        constructor : jQuery
    }
    jQuery.fn.init.prototype = jQuery.fn
    //对任意对象进行迭代操作
    jQuery.each = function(obj,callback){
        for(var i = 0;i<obj.length;i++){
            //运用call调整this的指向
            //回调函数里的this指向操作的对象
            //方便操作
            callback.call(obj[i],i,obj[i]);
        }
        //链式调用
        return obj
    }
    //测试
    jQuery("div").each(function(index, element) {
        console.log(this)
    });
    //jQ内部也经常用迭代操作数组或其它。
    jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) {
        console.log(name.toLowerCase())
    });

    jQuery.each是jQuery的工具,迭代操作对象合集里的对象,所以不用继承在原型中,而jQuery.fn.each就是jQuery.each的一个特例。

    each是一个典型的迭代运用,如我们想对一个合集的对象都执行的某功能,callback,通过each遍历对象或者数组就可以实现不停变化callback的操作对象。

    原理很简单就是将元素遍历依次传给回调函数,原代码中还考虑了一些情况,但没什么新知识,我就不补充了。

    回调函数

    作为参数的函数就叫回调函数。当一个函数接收一个函数

  • 相关阅读:
    用VisualC#.NET编写服务器日期控件
    全局程序集缓存GAC是什么概念
    HttpRequest.Filter 属性
    创建ASP.Net自定义控件
    js/javascript 判断变量未定义
    DevExpress 汉化(简单、实用、快速)
    一个页面标题和过滤输出的解决方案
    用VisualC#.NET编写服务器日期控件(源碼)
    ASP.NET多语言支持组件简介
    ASP.NET服务器控件编程浅析
  • 原文地址:https://www.cnblogs.com/winderby/p/4081892.html
Copyright © 2011-2022 走看看