標籤:style blog io color ar sp for div on
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源碼筆記——四