使用 $("a") 返回的对象就不再是一个简单的DOM对象了,而是一个复杂的JQuery对象。
那么JQuery是怎么创建对象的。
为了便于分析,我将JQuery中复杂的代码简化了一番,便于分析。
(function(global,factory){ factory(global); })(this,function(window,noGlobal){ var myJQuery=function(selector,context){ return new myJQuery.fn.init(selector,context); }; myJQuery.fn=myJQuery.prototype={ constructor:myJQuery,//这里非常重要 length: 0, each:function(){ console.log("创建了一个JQuery对象"+this.targetName); } }; var init=myJQuery.fn.init=function(selector,context,root){ return this; }; init.prototype = myJQuery.fn;// if(!noGlobal){ window.myJQuery=window.F$=myJQuery; } return myJQuery; });
调用时,只需要 F$("div").each(); 即可模拟JQuery的对象穿件。
整个JQuery库是一个立即执行函数。
init.prototype = myJQuery.fn; 这句话十分重要。
时间: 2024-11-05 22:01:30