jquery内核解析

前言:

本文主要讲述jquery $符的底层源码实现

正文:

 //jquery整体的结构是一个匿名函数

   (function( window, undefined ) {

       //jQuery就是一个很普通的函数,也是一个很普通的对象,还是一个构造器函数

       var jQuery = function( selector, context ) {

           return new jQuery.fn.init( selector, context );

       }

       //window.jQuery相当于把jQuery作为window的一个属性,所以这样一来在外部就可以通过window.jQuery来访问了

       //$就是window的一个属性,从window.jQuery=window.$=jQuery可以推出:$=jQuery

       window.jQuery = window.$ = jQuery;

       //jQuery的原型是一个json格式的对象

       //在jQuery原型上加的方法,只有通过选择器得到jQuery对象,才能调用该方法

       //在jQuery的API中,jQuery(elements)这些方法都得通过jQuery对象才能调用,这些方法全部是加在原型上的方法

       jQuery.fn = jQuery.prototype = {

           length: 0,

           size: function() {

             return this.length;

           },

           each: function( callback, args ) {

                return jQuery.each( this, callback, args );

           },

           ready: function( fn ) {}

       };

     //$.post或者jQuery.post是静态调用,称为全局方法,是直接加在构造器函数上的方法

     //全局方法和jQuery的原型上的方法

        如果写一个方法,该方法和页面上的元素没有关系,这个方法可以为全局方法

        如果写一个方法,该方法和页面上的元素有关系,则这个方法就是jQuery原型的方法

     jQuery.fn=jQuery.prototype=$.prototype=window.$.prototype=$.fn=window.jQuery.prototype=window.jQuery.fn

     //写一个类似于window的alert

     $.alert = function(message){

         window.alert(message);

     }

     //我们把一个方法加载jQuery对象上或者加在jQuery原型上,称这样的方法为jQuery插件

     //把jQuery的整个实现过程存放在匿名函数中,就是有些内容肯定不能让外部访问,会存在危险

   })(window);
时间: 2024-12-15 09:26:54

jquery内核解析的相关文章

jQuery内核详解与实践读书笔记1:原型技术分解2

上一篇已经搭建了一个非常简陋的jQuery框架雏形,如没有阅读搭建过程,请先阅读<jQuery内核详解与实践读书笔记1:原型技术分解1>初始搭建过程.接下来,完成书中介绍的剩下三个步骤: 7. 延续--功能扩展 jQuery框架是通过extend()函数来扩展功能的,extend()函数的功能实现起来也很简单,它只是吧指定对象的方法复制给jQuery对象或jQuery.prototype对象,如下示例代码就为jQuery类和原型定义了一个扩展功能的函数extend(). 1 var $ = j

jQuery内核详解与实践读书笔记1:原型技术分解1

一直以来都有研究一下jQuery源代码的想法,但是每次看到jQuery几千行的代码,头就大了,没有一点头绪,也不知道从哪里开始.昨天去图书馆无意间发现了这本<jQuery内核详解和实践>,翻看了一下里面的内容,这正是我寻觅多时剖析jQuery源码的好书. 废话不多说,直入正题吧.第一章介绍了一下jQuery的起步和一些历史故事,没什么重要内容.这里直接进入第二章,jQuery技术解密,从这一章开始就全部是干货了.这一章主要分四部分:jQuery原型技术分解,破解jQuery选择器接口,解析jQ

c#网络通信框架networkcomms内核解析 序言

networkcomms是我遇到的写的最优美的代码,很喜欢,推荐给大家:) 基于networkcomms2.3.1开源版本( gplv3)协议,写了一些文章,希望大家喜欢,个人水平有限,不足之处难免. networkcommsc#通信框架来自于美丽的英国剑桥,由大洋彼岸的两位工程师 Marc Fletcher, Matthew Dean开发. c#网络通信框架networkcomms内核解析之一 消息传送 c#网络通信框架networkcomms内核解析之二 消息处理流程 c#网络通信框架net

c#网络通信框架networkcomms内核解析之十 支持优先级的自定义线程池

本例基于networkcomms2.3.1开源版本  gplv3协议 如果networkcomms是一顶皇冠,那么CommsThreadPool(自定义线程池)就是皇冠上的明珠了,这样说应该不夸张的,她那么优美,简洁,高效. 在 <c#网络通信框架networkcomms内核解析之六 处理接收到的二进制数据>中我们曾经提到,服务器收到数据后,如果是系统内部保留类型数据或者是最高优先级数据,系统会在主线程中处理,其他的会交给自定义线程池进行处理. 作为服务器,处理成千上万的连接及数据,单线程性能

c#网络通信框架networkcomms内核解析之八 数据包的核心处理器

我们先回顾一个 c#网络通信框架networkcomms内核解析之六 处理接收到的二进制数据 中,主程序把PacketBuilder 中的数据交给核心处理器处理的过程 //创建优先级队列项目 PriorityQueueItem item = new PriorityQueueItem(priority, this, topPacketHeader, packetBuilder.ReadDataSection(packetHeaderSize, topPacketHeader.PayloadPac

jquery中解析JSON字符串的办法

data.msg传递了C#中构造的JSON字符串,使用下面两种在jquery中解析,都能正常工作 //解析返回的数据 var jsonValue = jQuery.parseJSON(data.msg); var jsonValue = eval('(' + data.msg + ')'); 附: /构造JSON字符串 string jsonStr = "{\"verifyOpinion\":\"" + temp.verifyResult + "

jquery JSON解析代码

jquery JSON解析说明.这里首先给出JSON字符串集,代码: var data=" { root: [ {name:'1',value:'0'}, {name:'6101',value:'西安市'}, {name:'6102',value:'铜川市'}, {name:'6103',value:'宝鸡市'}, {name:'6104',value:'咸阳市'}, {name:'6105',value:'渭南市'}, {name:'6106',value:'延安市'}, {name:'610

jQuery 插件开发解析

那么首先我们来简单的看一下最正统的 jQuery 插件定义方式: ? 1 2 3 4 5 6 7 8 9 10 11 12 (function ($) {     $.fn.插件名 = function (settings) {         //默认参数         var defaultSettings = {         }         /* 合并默认参数和用户自定义参数 */ settings = $.extend(defaultSettings, settings); r

c#网络通信框架networkcomms内核解析

networkcomms是我遇到的写的最优美的代码,很喜欢,推荐给大家:) 基于networkcomms2.3.1开源版本( gplv3)协议,写了一些文章,希望大家喜欢,个人水平有限,不足之处难免. networkcommsc#通信框架来自于美丽的英国剑桥,由大洋彼岸的两位工程师 Marc Fletcher, Matthew Dean开发. c#网络通信框架networkcomms内核解析之一 消息传送 c#网络通信框架networkcomms内核解析之二 消息处理流程 c#网络通信框架net