(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. java Timer 定时每天凌晨1点执行任务

    import java.util.TimerTask;/** * 执行内容 * @author admin_Hzw * */public class Task extends TimerTask {  ...

  2. 【python】发送post请求

    1. json格式的post请求 关键部分加粗显示了,主要是post数据的编码方式以及请求头的Content-type #coding=utf8 import json import gzip imp ...

  3. STM32F412应用开发笔记之一:初识NUCLEO-F412ZG

    今天终于收到了期待已久的NUCLEO-F412ZG,感谢电子发烧友论坛! 近几年来基本都是在STM32平台上做一些设计开发工作.STM32F103.STM32F107.STM32F429等都应用过,但 ...

  4. seo优化urlrewrite伪静态技术

    1.下载urlrewrite-3.2.0.jar 2.在WEB-INF下增加urlrewrite.xml <?xml version="1.0" encoding=" ...

  5. monkey之三:monkey测试测略(摘抄)

    一.分类 Monkey测试针对不同的对象,不同的目的,采用不同的测略方案. 测试类型分为: 应用程序的稳定性测试和压力测试 测试对象分为: 单个APK和多个APK集合 测试目的分为: 解决问题的测试( ...

  6. python之线程进程协成

    线程与进程 什么是线程 线程是进程一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位,线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源,但是它可与同属一个线程的 ...

  7. wap支付宝接口的问题

    今天在支付宝接口开发时,遇到的两个坑 第一个: https://doc.open.alipay.com/doc2/detail.htm?spm=a219a.7629140.0.0.8nHr4i& ...

  8. PHP中的header()函数作用

    PHP 中 header()函数的作用是给客户端发送头信息. 什么是头信息?这里只作简单解释,详细的自己看http协议.在 HTTP协议中,服务器端的回答(response)内容包括两部分:头信息(h ...

  9. 基于Netty与RabbitMQ的消息服务

    Netty作为一个高性能的异步网络开发框架,可以作为各种服务的开发框架. 前段时间的一个项目涉及到硬件设备实时数据的采集,采用Netty作为采集服务的实现框架,同时使用RabbitMQ作为采集服务和各 ...

  10. Java源码之 java.util.concurrent 学习笔记01

    准备花点时间看看 java.util.concurrent这个包的源代码,来提高自己对Java的认识,努力~~~ 参阅了@梧留柒的博客!边看源码,边通过前辈的博客学习! 包下的代码结构分类: 1.ja ...