JS技术

编译器的开发及心得_Javascript教程

字号+ 作者:H5之家 来源:H5之家 2015-10-01 08:25 我要评论( )

编译器的开发及心得,学习编译器的开发及心得,编译器的开发及心得,查看编译器的开发及心得,教程网3月27日整理其中有三个文件:LYZ.js,css.js,event.js。其

教程网3月27日整理

其中有三个文件:LYZ.js,css.js,event.js。其中LYZ.js为主文件。
LYZ.js中函数包括:LYZ.addEvent(),LYZ.removeEvent(),LYZ.byId(),LYZ.byTag(),LYZ.byClass(),
及辅助函数LYZ._addFunc()和散列表 LYZ.func;
首先是添加/删除事件函数,主要是兼容了浏览器,以及给添加事件函数(LYZ.addEvent)增加了返回值,给删除事件函数
(LYZ.removeEvent)兼容了参数传递(应为我比较喜欢用匿名函数添加事件控制)。因此可用以下方法添加/删除ddEvent(window,"load",function(){});
LYZ.removeEvent(handler);接着就是很简单的选择器(LYZ.byId,LYZ.byTag,LYZ.byClass),其中大部分功能和大家平常用到的没有区别,比如
function $(elem){return document.getElementById(elem);}
所做的改进是对LYZ.byTag函数的返回值做了修改,使其可用pop(),push()。也就是把返回值转换为数组。
个人觉得这两个内置函数很好用。
还有就是对通过选择器得到的元素进行包装。是这些元素具有LYZ.func散列表中所以属性,从使其具有可扩展性。
具体来说:首先是包装器:LYZ._addFunc();

  代码: LYZ._addFunc=function(elem){
for(var i in LYZ.func){
elem[i]=LYZ.func[i];
}
}

从代码中可以看出就是把LYZ.func中的属性全部添加到elem中

然后用包装器包装选择器的所有返回值。
例如LYZ.byId():
LYZ.byId=function(elem){return LYZ._addFunc(document.getElementById(elem));}
这样,当向LYZ.func中添加函数的话,通过选择器返回的元素也同样具有了此方法。
例如:如果添加函数abc

代码: LYZ.func.abc=function(){
alert("abc");
}

则执行LYZ.byTag("body").abc();同样可看到结果。 如果再修改abc为:

代码: LYZ.func.abc=function(){
alert("abc");
return this;
}

这样就有了和JQuery中同样的效果,可延展性。
例如执行alert(LYZ.byTag("body").abc().abc().abc().tagName); 就可以看到执行了三次abc().
如果觉得这样的代码效果很好,不妨再以后的自己代码中试试,只需很小的一个包装器就好。
如果想要延展性也要在每个函数最后返回 this。

当时在想这种效果时还有另一种方案:
就是创建类。例如:

代码: LYZ.package=function(elems){
this.elems=[];
if(elems.constructor.toLowerCase()=="array"){
this.elems=elems;
}
else this.elems.push(elems)
}
LYZ.func=LYZ.package.prototype={};

在选择器中当然也要更改:
例如:LYZ.byId=function(elem){return new LYZ.package(document.getElementById(elem));}
这样做的好处是不占用元素属性的命名空间,以及可一次处理多个元素。在LYZ.byTag,和LYZ.byClass。
这里就不再多说,附件中LYZ.js的注释中有LYZ.byTag的实现。
坏处是元素内置属性,方法无法应用。以及通用性。
如果谁感兴趣,可以研究一下。

还有另外两个文件event.js,css.js
event.js中主要有两个函数,LYZ.func.followeAble(),LYZ.func.dragAble()
从他们的型式可以看出通过选择器可直接用的。如果觉得前面麻烦,想直接用,就添加参数elem,
并删除代码elem=this,return this就好。
这两个函数一个是鼠标跟随,一个是可拖动,鼠标跟随有两个参数,一个是隐参this,即跟随元素,一个是可选参数:事件域。
另一个是拖动,只有一个隐参this,即可拖动元素。关于拖动论坛上有很多了,它的特点就是如果该拖动元素里设置了可拖动
区域,实质上是检查该元素里是否有元素属性cursor的值为move。则设置只有此拖动区域可拖动元素。默认为整个元素可拖动。

另一个css.js文件中有两个函数LYZ.func.addCss(),LYZ.func.getCss()
其中addCss中的核心代码是:

代码: for(var i in option){
elemStyle[i]=option[i];
}

其中option为参数,elemStyle=this.style;具体代码可以看css.js
如果对JSON有了解的可以优化下option参数,因为命名规则的原因如果要修改背景色只能,写成{backgroundColor:“#000”}形式。

总结:这个小工具是在自己学习javascript一段时间后的一个总结。下面自己就要学AJAX了。希望没有在各位面前班门弄斧。

最后要说的:欢迎各位转载,更希望各位修改,优化代码后发表。希望上面的东西对大家有用

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
网友点评