仿JQ基础架构,可扩展。
(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基础架构,可扩展。的更多相关文章
- jQuery源代码解析(1)—— jq基础、data缓存系统
闲话 jquery 的源代码已经到了1.12.0版本号.据官网说1版本号和2版本号若无意外将不再更新,3版本号将做一个架构上大的调整.但预计能兼容IE6-8的.或许这已经是最后的样子了. 我学习jq的 ...
- IT基础架构规划方案一(网络系统规划)
背景 某集团经过多年的经营,公司业务和规模在不断发展,公司管理层和IT部门也认识到通过信息化手段可以更好地支撑公司业务运营.提高企业生产和管理效率.同时随着新建办公 ...
- IT基础架构规划方案二(计算机系统与机房规划规划)
计算机系统规划 服务器硬件选型规划方案 根据对某集团的实际调研,获取了企业业务应用系统的建设情况,随着企业信息化建设的推进,需要对各种信息化管理系统和应用系统的服务器选型进行选 ...
- IT基础架构规划方案三(IT基础软件和系统规划)
IT基础软件和系统规划 操作系统选型规划方案 根据对某集团的实际调研,获取了企业业务应用系统的建设情况,随着企业信息化建设的推进,需要对各种信息化管理系统和应用系统的服务器选型进行选型规划,根据不同的 ...
- IT基础架构规划方案之实际网络设计案例
根据某集团总部新办公大楼.厂房和分支机构(店面)的情况,以及IT部门对网络节点数.网络应用和分支机构(店面)的初步规划,对企业的总体网络拓扑结构进行设计,如下图. 设备选型和部署参考: 类型 设备选型 ...
- [翻译]用 Puppet 搭建易管理的服务器基础架构(3)
我通过伯乐在线翻译了一个Puppet简明教程,一共分为四部分,这是第三部分. 本文由 伯乐在线 - Wing 翻译,黄利民 校稿.未经许可,禁止转载!英文出处:Manuel Kiessling.欢迎加 ...
- 移动互联网实战--Web Restful API设计和基础架构
前言: 在移动互联网的大潮中, Web Restful API逐渐成为Web Server重要的一个分支. 移动端和服务端的交互, 主流的方式还是通过Http协议的形式来进行. 请求以Get/Post ...
- 面向服务体系架构(SOA)和数据仓库(DW)的思考基于 IBM 产品体系搭建基于 SOA 和 DW 的企业基础架构平台
面向服务体系架构(SOA)和数据仓库(DW)的思考 基于 IBM 产品体系搭建基于 SOA 和 DW 的企业基础架构平台 当前业界对面向服务体系架构(SOA)和数据仓库(Data Warehouse, ...
- b2c项目基础架构分析(二)前端框架 以及补漏的第一篇名词解释
继续上篇,上篇里忘记了也很重要的前端部分,今天的网站基本上是以一个启示页,然后少量的整页切换,大量的浏览器后台调用web服务局部.动态更新页面显示状态这种方式在运作的,从若干年前简单的ajax流行起来 ...
随机推荐
- 最终版的Web(Python实现)
天啦,要考试了,要期末考试了,今天把最终版的Python搭建Web代码先写这里记下了.详细的过程先不写了. 这次是在前面的基础上重写 HTTPServer 与 BaseHTTPRequestHandl ...
- Ubuntu 16.04 安装ftp服务器
1.sudo apt-get update 2.sudo apt-get install vsftpd ,执行完该步骤,vsftpd服务已经安装 3.创建ftp用户 a,创建用户目录 sudo mkd ...
- js获取文档高度
网页可见区域宽: document.body.clientWidth网页可见区域高: document.body.clientHeight网页可见区域宽: document.body.offsetWi ...
- ArrayList、Vector、LinkedList源码
List接口的一些列实现中,最常用最重要的就是这三个:ArrayList.Vector.LinkedList.这里我就基于JDK1.7来看一下源码. public class ArrayList< ...
- Linux下设置环境变量
setenv(set environment variable) 功能说明:查询或显示环境变量. 语 法:setenv [变量名称][变量值] 补充说明:setenv为tsch中查询或设置环境变量的指 ...
- Python的方法解析顺序(MRO)
mro即method resolution order,主要用于在多继承时判断调的属性的路径(来自于哪个类). http://blog.csdn.net/imzoer/article/details/ ...
- Lattice FIFO 使用之FIFO_DC输入输出宽度不同时 的一个注意事项
在使用FIFO_DC的时候,我们知道这个FIFO的一个功能是可以输入输出的数据宽度不一样,比如: 输入数据为128bit,输出数据为16bit,FIFO内部可以实现这样的转换,但是输出的时候是先送出一 ...
- Foreach 原理
public class Person { private string[] friends = { "asf", "ewrqwe", "ddd&qu ...
- 调用WCF不需要添加服务引用,使用一个WCFHelper类就可以
效果图: 调用过程: string WCFURL = "http://localhost:100/Service1.svc"; UserRequest user = new Use ...
- css定位学习经验记录
之前了解到css的定位position属性,常用的三种: position:absolute 1.当父元素定位为relative时,以父元素为起始坐标定位. 2.当父元素没有定位时,以body为起始坐 ...