JQuery源码解析-- 对象的创建

  使用 $("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; 这句话十分重要。

  

原文地址:https://www.cnblogs.com/xianrongbin/p/5398945.html