轻松理解jquery源码--元素选择器的实现原理

(function () {
    var jQ = (function () {
        var myJQ = function (selector) {
            return new myJQ.fn.init(selector);
        }

        myJQ.fn = myJQ.prototype = {
            init:function (selector) {
                console.log(selector);
                var ele = document.getElementById(selector.slice(1));
                console.log(ele);
            }
        };

        myJQ.fn.init.prototype = myJQ.fn;
        return myJQ;
    })();
    window.jQ = jQ;
})()

// 使用
jQ('#question-header')
jQ.fn.abc='abc'
jQ('#question-header').abc

从代码可以看出,【挂在】window上的jQ其实是【jQ内部的myJQ的init对象】
myJQ.fn.init.prototype = myJQ.fn
上面是jquery最难理解的,就是把我们使用的jQ的原型设为myJQ,(myJQ.fn.init等于window.jQ),myJQ.fn是myJQ.prototype的【别名】
在这里插入图片描述

(function () {
    var jQ = (function () {
        var myJQ = function (selector) {
            return new myJQ.fn.init(selector);
        }

        myJQ.fn = myJQ.prototype = {
            init:function (selector) {
                this.ele = null; //保存selector取到的对象

                this.html=function(){
                    return ele;
                };
                this.find=function(){
                    ele = document.getElementById(selector.slice(1));
                }
                //find ele from dom tree
                this.find();
            }
        };

        myJQ.fn.init.prototype = myJQ.fn;
        return myJQ;
    })();
    window.jQ = jQ;
})()

jQ('#question-header')
jQ('#question-header').html()

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值