`
roccloudy
  • 浏览: 739 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

jquery是怎样开始工作(2)

阅读更多

       接着上节写.我们在工作中使用jquery的时候常常是这样开始的:

 

$(document).ready(function(){});

       这样写的目的是让文档先加载,然后再开始执行ready.这和调用window.onload方法差不多,当然ready有些好处,比如速度快,会执行多个,不再赘述.我要说的是,它有个简写的方法:

$(function(){});

      其实我人生中写的第一段jquery代码就是这样开头的,当时也没有太多的理解,最近看源码,才知道为什么可以这样写,源码大意如下,中间略去N多代码:

 

 

var rootjQuey = JQuery(docuemt);
rootJQuery.ready = function(){
  //具体实现很复杂以后再说
}
// 这是我上节写的初始化函数
init(selector){
     if(typeof selector == "function"){
             return rootjQuery.ready( selector ) ;
      }
}

    所以$(function())实际是调用init(function()),那么返回的就是rootjQuery.ready(function()),也就是JQuery(doucment).ready(function()),即$(document).ready(function());

 

    我这两节写的初始化函数都是init,而真正的源码的初始化函数是:

 

var JQuery = function(selector, context){
      reutrn new JQuery.fn.init(selector, context);
}

// 通过初始化函数构建JQuery对象
var init = JQuery.fn.init = function(selector, context){
      // N多代码...
}

    其中JQuery.fn = JQuery.prototype,也就是JQuery函数的原型对象,而我自己定义的是:

var MyJquery = function(selector){  
  
        // 把selector参数传入init中让它去初始化  
        return new init(selector);  
    };  
  
    // 初始化函数,它负责处理传入的参数  
    var init = function(selector){  
        alert("传入的参数是"+selector);  
    }  

    参数context先不说,源码比我多了个JQuery.fn.init();也就是把init()函数定义在了JQuery.fn(JQuery原型对象)上,这样做的好处是可以节省空间. 简单的理解就是:

    直接定义init(),每个实例对象都会有一个init()方法.

    通过原型对象定义init(),每个实例对象共享一个init()方法.

    具体关于对象原型相关的知识,推荐<<javascript高级程序设计>>(我看的是第三版第六章面向对象的程序设计)

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    jQuery工作流程步骤进度插件

    **jQuery工作流程步骤进度插件ystep详解** 在网页开发中,为了清晰地展示复杂的步骤流程,如用户注册、购物流程或者项目审批等,工作流程步骤进度插件显得尤为重要。ystep是一款基于jQuery的高效插件,它能帮助...

    从零开始学习jQuery

    本教程旨在帮助初学者从零开始掌握jQuery的核心概念。 1. **选择器** jQuery的选择器类似于CSS,用于选取HTML元素。如`$("#id")`选取ID为指定值的元素,`$(".class")`选取具有特定类的元素,`$("tagname")`选取...

    jQueryEasyUI从零开始学源码part1

    本教程“jQueryEasyUI从零开始学源码part1”旨在帮助初学者深入理解jQuery EasyUI的工作原理,通过源码分析来提升开发技能。 首先,我们需要了解jQuery EasyUI的基础概念。jQuery是一个轻量级的JavaScript库,简化...

    jquery-3.5.1.min.js_jquery-3.5.1.min.js_jquery_

    然而,随着ES6等现代JavaScript特性的普及,一些开发者开始质疑是否还需要依赖jQuery。尽管如此,对于需要快速开发、维护大型项目或者需要兼容旧浏览器的场景,jQuery仍然具有不可替代的价值。因此,了解并熟练掌握...

    jQuery中文资料电子书教程

    - `从零开始学习jQuery.pdf` 和 `Learning+jquery中文版.pdf` 是两本完整的jQuery教程,它们从基础到高级全面讲解了jQuery的核心概念和技术,适合初学者系统学习。 - `15天学会jQuery` 可能是一个快速学习计划或...

    jquery 入门文档 从零开始学校jquery

    在准备工作中,我们需要确保引入了jQuery和jQueryUI的库文件,可以通过CDN(如Google的CDN)或者本地服务器提供。在实际应用中,我们可以使用Dialog组件来创建弹出层,如静态提示、动态提示和遮罩效果的弹出框,...

    《从零开始学JQuery》Word版书籍及常用jquery资料

    《从零开始学JQuery》是一本非常适合初学者入门的jQuery教程,旨在帮助读者快速掌握这一强大的JavaScript库。jQuery简化了HTML文档遍历、事件处理、动画设计和Ajax交互等任务,使得网页开发更为便捷。在Word版书籍中...

    jquery.lazyload图片预加载效果 jquery预加载

    jQuery LazyLoad 是一个jQuery插件,它的主要功能是在用户滚动页面到图片所在位置时才开始加载图片,而不是在页面初始加载时就一次性加载所有图片。这种方式大大减少了首次加载页面时的数据量,提高了页面的加载速度...

    jquery图片加载动画——queryloader2

    jQuery QueryLoader2是一款强大的JavaScript库,专为网页中的图片加载设计出优雅的加载动画效果。这个库是由Gerben Stoel开发的,它旨在提供一种跨浏览器的解决方案,以提升用户体验,尤其是在网页内容加载期间。...

    从零开始学习jQuery教程_c#.net版.zip

    《从零开始学习jQuery教程_c#.net版》是一份针对初学者设计的全面教程,旨在帮助没有基础的读者快速掌握jQuery这一强大的JavaScript库。jQuery简化了JavaScript中的DOM操作、事件处理、动画效果以及Ajax交互,使得...

    [jQuery实战第二版].pdf

    ### jQuery实战第二版知识点概述 #### 一、书籍基本信息与评价 - **书籍名称**:《jQuery实战第二版》(jQuery in Action, Second Edition) - **作者**:Bear Bibeault 和 Yehuda Katz - **出版商**:MANNING - **...

    Jquery各种教程打包

    2. **《Jquery1.2.6源码分析.pdf》**:这本书籍或文章可能详细剖析了jQuery 1.2.6版本的源代码,帮助开发者理解jQuery的内部工作原理,包括如何优化性能、处理DOM操作、实现高效选择器等。通过源码分析,开发者可以...

    jquery-2.2.4

    2. **性能提升**:在2.x版本中,jQuery团队进行了大量的优化工作,使得库的运行速度比1.x系列更快,特别是在现代浏览器中。 3. **API变化**:一些不常用或者过时的方法在2.x版本中被移除,例如`$.browser`,鼓励...

    jquery实现PDF在线预览 jquery实现在线预览PDF文档

    2. **配置PDF.js**:PDF.js库需要一些配置才能工作。例如,设置默认的PDF文件URL,以及指定渲染PDF的容器元素。 ```javascript var pdfUrl = 'path/to/your/pdf/file.pdf'; var container = $('#pdf-container'); `...

    从零开始学习JQuery

    2. **解决浏览器兼容性问题**:通过统一的事件对象处理,jQuery解决了不同浏览器间的兼容性问题。开发者无需针对每个浏览器编写特定的代码,大大减少了开发工作量。 3. **丰富的UI效果实现**:jQuery能够实现多种...

    jquery文件上传插件 jquery.uploadify.js

    总的来说,jQuery.uploadify.js是一个强大的文件上传解决方案,它的兼容性增强使得它能够在各种浏览器环境中稳定工作,而与C#的结合则保证了服务端处理的灵活性。对于需要在多种浏览器环境下实现文件上传功能的Web...

    jquery-migrate

    1. **恢复已移除的API**: jQuery 1.9开始移除了部分不再推荐使用的API,如`.live()`, `.size()`, `.data()(处理原始值)`等。jQuery Migrate会重新引入这些方法,以便在升级过程中能正常运行依赖它们的代码。 2. *...

    jQuery 常用版本大全

    2. **jQuery 2.x系列**:从这个版本开始,jQuery放弃了对旧版IE的支持,从而可以更轻量级,更快地运行。如果你的项目不需要考虑旧版IE,那么2.x系列是一个不错的选择。 3. **jQuery 3.x系列**:这个版本引入了更多...

Global site tag (gtag.js) - Google Analytics