(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. 如何利用rem在移动端不同设备上让字体自适应大小

    本人也是一个刚刚接触前端的小虾米,对于移动端这一块更是一抹眼的黑,前端时间接手开始一个移动端的项目,在网上查询了一下rem的作用,百度搜索下来全是介绍rem的作用原理的(rem是根据根元素计算的),然 ...

  2. 【Django】--Model字段

    参考地址:http://www.cnblogs.com/wupeiqi/articles/6216618.html 所有字段 AutoField(Field) --int自增列,必须填入参数prima ...

  3. October 31st Week 45th Monday 2016

    While there is life there is hope. 一息若存,希望不灭. Go on living even if there is no hope. Knowing is not ...

  4. C#操作XML之读取数据

    List<Ztree> ZTreeList = new List<Ztree>(); XDocument MenuConfigDoc = XDocument.Load(&quo ...

  5. inotify监控文件变化

    1.安装inotify-tools yum install make  gcc gcc-c++  #安装编译工具 inotify-tools下载地址:http://github.com/downloa ...

  6. 何为SSH协议?

    该文来自百度百科,自我收藏. SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定:SSH 为建立在应用层基础上的安全协议.SSH ...

  7. php抽奖代码

    1.经典概率算法抽奖 $tmpItems = ['电脑'=>10, '相机'=>50, '100元现金'=>500]; $proSum = array_sum($tmpItems); ...

  8. PostgreSQL中标准的SQL boolean数据类型

  9. 公众号第三方平台开发 获取 component_verify_ticket 2015-07-05 10:16 59人阅读 评论(0) 收藏

    8.推送component_verify_ticket协议 在公众号第三方平台创建审核通过后,微信服务器会向其"授权事件接收URL"每隔10分钟定时推送component_veri ...

  10. asp.net core的TagHelper简单使用

    TagHelper(标签助手)是ASP.NET Core非常好的一种新特性.可以扩展视图,让其看起来像一个原生HTML标签. 应该使用TagHelper替换HtmlHelper,因其更简洁更易用,且支 ...