jquery 프레임워크 봉인 및 해석 원리 + 자체 구축 jquery 프레임워크 + 주석

25012 단어 전단 학습 노트
<script>
    //         jq    (function (window) {
        //                ,       ,          ,    
        var arr = [];
        var push = arr.push;
        var splice = arr.splice;
        var slice = arr.slice;
        //  jQuery  Sizzle        function Sizzle(seletcor) {
            return document.querySelectorAll(seletcor);
        }
        //  jq     
        function jQuery(selector) {
            //  jq      F init  (     )       jq   (    ),    F      
            //  jq    
            return new jQuery.fn.init(selector);
        }
        //jqjq        jQuery.fn  jQuery.prototype == jQuery.fn
        jQuery.fn = jQuery.prototype = {
            constructor: jQuery,
            //       
            init: function (selector) {
                //       domdomthis 
                //     splicethis       
                splice.call(this,0,this.length);
                //     pushdomthis 
                push.apply(this,Sizzle(selector));
                //          ,          。
                //  : 、         ,thisreturn this        
                //      、         ,    thisreturn this                return this;
            },
            //  jq  cssdom   
            css: function (styleName, styleValue) {
                for (var i = 0; i < this.length; i++) {
                    var ele = this[i];
                    ele.style[styleName] = styleValue;
                }

                //        
                return this;
            }
        };
        //jq  extend   jq jQuery jQuery.prototype          
        //entend        /*
        *  jqueryextend
        *
        * jQuery.extend({
        *   each:function(){},
        *   type:function(){},
        *   isString:function(){}
        * });
        *
        * jQuery          jQuery 
        * jQuery   dom       jQuery.prototype 
        *
        * */

        /*
        * jq      extend
        *
        *
        * jQuery.extend();jQuery 
        * jQuery.extend();2,3,4
        *
        * jQuery.fn.extend():jQuery.fn 
        * jQuery.fn.extend():2,3,4
        *
        * */
        jQuery.fn.extend = jQuery.extend = function () {
            var target, sources;
            var arg0 = arguments[0];
            if (arg0.length == 0) return this;

            if (arguments.length == 1) {
                target = this;
                sources = [arg0];
            } else {
                target = arg0;
                sources = slice.call(arguments, 1);
            }
            for (var i = 0; i < sources.length; i++) {
                var source = sources[i];
                for (var key in source) {
                    target[key] = source[key];
                }
            }
            return target;
        }
        //                 init      jquery   ,  ,  init        // jq        
        jQuery.fn.init.prototype = jQuery.fn;
        // jq    
        window.jQuery = window.$ = jQuery;
    })(window);

script>

좋은 웹페이지 즐겨찾기