(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. AnyImgUpload

    @{ ViewBag.Title = "ImgForAny"; Layout = null; } <h2>ImgForAny</h2> <script ...

  2. OpenGL中坐标系的理解(一)

    在OpenGL中,存在着至少存在着三种矩阵,对应着函数glMatrixMode()的三个参数:GL_MODELVIEW,GL_PROJECTION,GL_TEXTURE. 以下主要描述GL_MODEL ...

  3. sql 数据库结构导出到文件

    SELECT 表名 = Case When A.colorder= Then D.name Else '' End, 表说明 = Case When A.colorder= Then isnull(F ...

  4. gloolooer

    V1.2gloolooer金[http://sh.yun.ftn.qq.com/ftn_handler/0a9043ee7aa120d3c864281211dff2f08efe5e2d42438ec5 ...

  5. Web Js 按键事件……Enter提交事件 Enter Js事件

    $(document).ready(function(){ document.onkeydown = function (event){ if (event.keyCode==13) //回车键的键值 ...

  6. Django底层剖析之一次请求到响应的整个流程

    As we all know,所有的Web应用,其本质上其实就是一个socket服务端,而用户的浏览器就是一个socket客户端. #!/usr/bin/env python #coding:utf- ...

  7. .NET 需要处理的高性能WEB架构 - .NET架构

    1.如果不想被微软包围(其实微软的一套并不贵,是被谣言传高了),数据层依然可以选择SQL Server数据库和存储过程. 2.缓存不再依赖.net自身提供的缓存机制,迁移到部署在Linux平台上的分布 ...

  8. 用 IIS 实现请求转发

    最近部门要开发一个简单的APP,部分数据是现有项目已经存在的,为了方便维护,希望只提供一个交互的入口,并且协议的规则不变. 基于这个需求,有两套解决方案: 1.用代码将现有的api封装一层,对请求数据 ...

  9. c语言快速入门3

    如果你想快速入门计算机,可以参考我的上一篇帖子,先了解一些必备的软知识,然后再来进行语言的快速入门 计算机入门基础知识 c语言快速入门1 c语言快速入门2 3.4.1 字符和字符串 字符:'' 单个  ...

  10. 使用Spring发送带附件的电子邮件(站内和站外传送)

    JavaMail的介绍 JavaMail,顾名思义,提供给开发者处理电子邮件相关的编程接口.它是Sun发布的用来处理email的API.它可以方便地执行一些常用的邮件传输.   虽然JavaMail是 ...