(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基础架构,可扩展。
- Milvus Cloud架构详解:构建高效、可扩展的向量数据库系统
- 高性能可扩展MySQL数据库设计及架构优化 电商项目(笔记)
- 可扩展的Web架构和分布式系统
- 花6个月写的付费专栏,免费送|仿开源框架从零到一完整实现高性能、可扩展的RPC框架
- 仿开源框架从零到一完整实现高性能、可扩展的RPC框架 | 6个月做成教程免费送
- MySQL性能调优与架构设计——第 14 章 可扩展性设计之数据切分
- 通向高可扩展性之路(推特篇) ---- 一个推特用来支撑1亿5千万活跃用户、30万QPS、22MB每秒Firehose、以及5秒内推送信息的架构
- Android端IM应用中的@人功能实现:仿微博、QQ、微信,零入侵、高可扩展
- 高性能可扩展MySQL数据库设计及架构优化 电商项目(慕课)第1章 数据库开发规范的制定