(function(win,doc,fn){

    var events = [];//拷贝核心方法
    var publicEvent = ["extend","fn"];//公共核心方法
    var removefn = [];

    var A = "A";//原型库
    var $_ = "$_";//库名
    win[A] = function(e,contentText){

        var query = this.__proto__;

        contentText = contentText || [];

        contentText.push.apply(contentText,doc.querySelectorAll(e));

        query.contentText = contentText;

        return query;

    };

    //        ===========方法处理s=========
    win[A].fn = {

        extend:function(obj){//事件方法处理
            for(var i in obj){

                this[i] = obj[i];

            };

        }

    };

    win[A].extend = function(obj){//核心方法处理
        events.push(obj)

        for(var i in obj){

            this[i] = obj[i];

        };

    };

    //        ===========方法处理e=========

    //        ===========方法扩展s=========
    //核心方法扩展
    win[A].extend({

        noConflict:function(name){//多库共存
            var new$ = win[$_];

            win[$_] = undefined;

            return new$;

        },

        query:win[A],

        query_V:"0.1",

        query_Name:A,

        query_Conflict:$_,//库名
    });

    win[A].fn.extend({

    })

    //事件方法扩展
    var eventsFn = ["click"];//event事件数组
    for (var i = 0 ; i < eventsFn.length;i++){

        win[A].fn[eventsFn[i]] = (function(name){//写入事件
            return function (fn){

                var context = this.contentText;

                for(var i = 0 ; i < context.length;i++){

                    removefn.push({

                        context:context,

                        fn:fn

                    });

                    context[i].addEventListener(name,fn);

                };

            };

        })(eventsFn[i]);

        win[A].fn["un"+eventsFn[i]] = (function(name){//移除事件
            return function (fn){

                fn = fn || new Function();

                for(var i = 0 ; i < removefn.length;i++){

                    var index = 0;

                    for(var j = 0 ; j < removefn[i].context.length ; j++){

                        if(removefn[i].context[j] == this.contentText[j]){

                            index++;

                        };

                    };

                    if(index == removefn[i].context.length){

                        var context = this.contentText;

                        for(var a = 0 ; a < context.length;a++){

                            context[a].removeEventListener(name,removefn[i].fn);

                        };

                    };

                };

                fn();

            };

        })(eventsFn[i]);

    };

    //        ===========方法扩展e=========
    win[A].prototype = win[A].fn;

    win[A].prototype.fn = win[A].fn;

    fn(win,doc,win[A],events,publicEvent);

})(window,document,function(win,doc,A,events,publicEvent){

    win[A.query_Conflict] = function(a){

        return new A(a);

    };

    for(var i = 0 ; i < events.length ; i++){

        for(var j in events[i]){

            win[A.query_Conflict][j] = events[i][j];

        };

    };

    for(var i = 0 ; i < publicEvent.length;i++){

        win[A.query_Conflict][publicEvent[i]] = A[publicEvent[i]];

    };

    win[A.query_Conflict].prototype = A.prototype;

});

仿JQ基础架构,可扩展。的更多相关文章

  1. jQuery源代码解析(1)—— jq基础、data缓存系统

    闲话 jquery 的源代码已经到了1.12.0版本号.据官网说1版本号和2版本号若无意外将不再更新,3版本号将做一个架构上大的调整.但预计能兼容IE6-8的.或许这已经是最后的样子了. 我学习jq的 ...

  2. IT基础架构规划方案一(网络系统规划)

    背景                   某集团经过多年的经营,公司业务和规模在不断发展,公司管理层和IT部门也认识到通过信息化手段可以更好地支撑公司业务运营.提高企业生产和管理效率.同时随着新建办公 ...

  3. IT基础架构规划方案二(计算机系统与机房规划规划)

    计算机系统规划       服务器硬件选型规划方案       根据对某集团的实际调研,获取了企业业务应用系统的建设情况,随着企业信息化建设的推进,需要对各种信息化管理系统和应用系统的服务器选型进行选 ...

  4. IT基础架构规划方案三(IT基础软件和系统规划)

    IT基础软件和系统规划 操作系统选型规划方案 根据对某集团的实际调研,获取了企业业务应用系统的建设情况,随着企业信息化建设的推进,需要对各种信息化管理系统和应用系统的服务器选型进行选型规划,根据不同的 ...

  5. IT基础架构规划方案之实际网络设计案例

    根据某集团总部新办公大楼.厂房和分支机构(店面)的情况,以及IT部门对网络节点数.网络应用和分支机构(店面)的初步规划,对企业的总体网络拓扑结构进行设计,如下图. 设备选型和部署参考: 类型 设备选型 ...

  6. [翻译]用 Puppet 搭建易管理的服务器基础架构(3)

    我通过伯乐在线翻译了一个Puppet简明教程,一共分为四部分,这是第三部分. 本文由 伯乐在线 - Wing 翻译,黄利民 校稿.未经许可,禁止转载!英文出处:Manuel Kiessling.欢迎加 ...

  7. 移动互联网实战--Web Restful API设计和基础架构

    前言: 在移动互联网的大潮中, Web Restful API逐渐成为Web Server重要的一个分支. 移动端和服务端的交互, 主流的方式还是通过Http协议的形式来进行. 请求以Get/Post ...

  8. 面向服务体系架构(SOA)和数据仓库(DW)的思考基于 IBM 产品体系搭建基于 SOA 和 DW 的企业基础架构平台

    面向服务体系架构(SOA)和数据仓库(DW)的思考 基于 IBM 产品体系搭建基于 SOA 和 DW 的企业基础架构平台 当前业界对面向服务体系架构(SOA)和数据仓库(Data Warehouse, ...

  9. b2c项目基础架构分析(二)前端框架 以及补漏的第一篇名词解释

    继续上篇,上篇里忘记了也很重要的前端部分,今天的网站基本上是以一个启示页,然后少量的整页切换,大量的浏览器后台调用web服务局部.动态更新页面显示状态这种方式在运作的,从若干年前简单的ajax流行起来 ...

随机推荐

  1. sh2.sed脚本练习

    1,删除/etc/grub.conf文件中行首的空白字符: sed -r 's@^[[ :spapce: ]] +@@g' /etc/grub.conf 2.替换/etc/inittab 文件中&qu ...

  2. 解决绝对定位div position: absolute 后面的<a> Link不能点击

    今天布局的时候,遇到一个bug,当DIV设置为绝对定位时,这个div后面的相对定位的层里面的<a>Link标签无法点击. 网上的解决方案是在绝对定位层里面添加:pointer-events ...

  3. linux 下查看cpu位数 内核等参数命令(转)

    # uname -a Linux euis1 2.6.9-55.ELsmp #1 SMP Fri Apr 20 17:03:35 EDT 2007 i686 i686 i386 GNU/Linux ( ...

  4. MySQL Workbench中修改表字段字符集

    背景介绍重要性必要性作用意义略过,开门见山: 用SQL语法修改字符集,可以参考此篇: http://www.cnblogs.com/HondaHsu/p/3640180.html MySQL提供图形界 ...

  5. 关于安装teamviewer11出现verification of your teamviewer version failed错误处理

    关于安装teamviewer11出现verification of your teamviewer version failed错误处理 teamviewer 在ubuntu 中安装方法是: 去tea ...

  6. 浅析/dev/shm

    一,/dev/shm 概念 /dev/shm 是一个tmpfs文件系统,临时文件系统,是基于内存的文件系统,也就是说/dev/shm中的文件是直接写入内存的,而不占用硬盘空间. 在Centos和Red ...

  7. Linux 2.6内核中新的锁机制--RCU

    转自:http://www.ibm.com/developerworks/cn/linux/l-rcu/ 一. 引言 众所周知,为了保护共享数据,需要一些同步机制,如自旋锁(spinlock),读写锁 ...

  8. FFT与乒乓球

    刚刚打乒乓球的时候,看到一个旋球.想起<傅里叶分析之掐死教程>: “正弦曲线波叠加出一个带90度角的矩形波来” 我们把多个旋叠加在一起,是不是就可以让这个球跳舞了呢?

  9. 获取 windows 商店内的 aapx 安装包 并 安装(旁加载)

    这是一篇教程,写在 win10 版<量子破碎>发售近期. 主要原因:windows 商城的应用下载实在难以忍受...... #######2016-4-9更新####### 4-6号通过旁 ...

  10. ubuntu14 备份

    备份命令 # tar cvpjf backup.tar.bz2 –exclude=/proc –exclude=/lost+found –exclude=/backup.tar.bz2 –exclud ...