zoukankan      html  css  js  c++  java
  • 浅析jQuery基础框架

    一、原型模式结构

    1 // 定义一个jQuery构造函数
    2 var jQuery = function() {
    3 
    4 };
    5 
    6 // 扩展jQuery原型 
    7 jQuery.prototype = {
    8 
    9 };

    上面是一个原型模式结构,一个jQuery构造函数和jQuery实例化对象的的原型对象,我们一般是这样使用的:

    1 var jq = new jQuery(); //变量jq通过new关键字实例化jQuery构造函数后就可以使用原型对象中的方法,但是jQuery并不是这么使用的


    二、返回选择器实例 

     1 var jQuery = function() {
     2     
     3     // 返回选择器实例
     4     return new jQuery.prototype.init();
     5 };
     6 jQuery.prototype = {
     7 
     8     // 选择器构造函数
     9     init: function() {
    10 
    11     }
    12 }; 

    虽然jQuery不是通过new关键字实例化对象,但是执行jQuery函数仍然得到的是一个通过new关键字实例化init选择器的对象,如:

    1 var navCollections = jQuery('.nav');  //变量navCollections保存的是class名为nav的DOM对象集合.


    三、访问原型方法 

     1 var jQuery = function() {
     2     
     3     // 返回选择器实例
     4     return new jQuery.prototype.init();
     5 };
     6 jQuery.prototype = {
     7 
     8     // 选择器构造函数
     9     init: function() {
    10 
    11     },
    12 
    13     // 原型方法
    14     toArray: function() {
    15 
    16     },
    17     get: function() {
    18 
    19     }    
    20 };
    21 
    22 // 共享原型
    23 jQuery.prototype.init.prototype = jQuery.prototype; 

    我们一般习惯称jQuery函数中返回的选择器实例对象为jQuery对象,如我们可以这样使用:

    1 jQuery('.nav').toArray(); // 将结果集转换为数组

    为什么可以使用toArray方法呢? 即如何让jQuery对象访问jQuery.prototype对象中的方法?只需将实例化选择器对象的原型对象共享jQuery.prototype对象,上面体现代码为:

    1 jQuery.prototype.init.prototype = jQuery.prototype; // 共享原型


    四、自执行匿名函数

     1 (function(window, undefined) {
     2 
     3     var jQuery = function() {
     4         
     5         // 返回选择器实例
     6         return new jQuery.prototype.init();
     7     };
     8     jQuery.prototype = {
     9 
    10         // 选择器构造函数
    11         init: function() {
    12 
    13         },
    14 
    15         //原型方法
    16         toArray: function() {
    17 
    18         },
    19         get: function() {
    20 
    21         }    
    22     };
    23     jQuery.prototype.init.prototype = jQuery.prototype;
    24 
    25     // 局部变量和函数在匿名函数执行完后撤销
    26     var a, b, c;
    27     function fn() {
    28 
    29     }
    30 
    31     // 使jQuery成为全局变量
    32     window.jQuery = window.$ = jQuery;
    33 
    34 })(window); 

    自执行匿名函数中声明的局部变量和函数在匿名函数执行完毕后撤销,释放内存,对外只保留jQuery全局变量接口。

    转载请注明转自博客园浅析jQuery基础框架

  • 相关阅读:
    MongoDB 处理jumbo chunks警告信息
    MongoDB 3.0挂起原因? WiredTiger实现:一个LRU cache深坑引发的分析
    python3中字符串、整数互转以及转二进制(MAC地址IP地址转二进制方法)
    MongoDB 批量插入避免唯一值重复停掉问题
    MongoDB 3.6用户白名单(转载)
    MongoDB中WiredTiger的数据可用性设置
    Mongodb 新版配置文件详解(转载)
    MongoDB 启动后告警
    MongoDB 安装部署需求(官方文档)
    golang中defer的些许总结
  • 原文地址:https://www.cnblogs.com/yangjunhua/p/2835989.html
Copyright © 2011-2022 走看看