首页 > 代码库 > jQuery源码笔记——四
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的操作对象。
原理很简单就是将元素遍历依次传给回调函数,原代码中还考虑了一些情况,但没什么新知识,我就不补充了。
回调函数
作为参数的函数就叫回调函数。当一个函数接收一个函数
jQuery源码笔记——四
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。