锁定老帖子 主题:用js书写UI组件之js基础知识
该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2008-12-02
最后修改:2008-12-02
从ymPrompt3 源代码中,发现的一个从DOM树中,选取类似于div之类的标签对象的函数。 在 数组c中寻找节点,如果数组不存在,在Dom树中寻找节点,同时还存放在数组c中。这中方式缩短了节点查询时间。 下面是可读代码: var d=document; var c=[]; $=function(id){ var cc=c[id]; var tmp; if (cc&&cc.parentNode) tmp=cc; else { c[id]=d.getElementById(id); tmp=c[id]; } return tmp; }; 其中:c相当于一个缓冲容器。第一次选取的对象,存在这个缓冲容器中,下次寻找时直接从缓冲容器中取出就是了。 如果组件动态的新增删除时,这个函数估计要闯大祸。 下面是实用代码: var c=[],$=function(id){var cc=c[id];return cc&&cc.parentNode?cc:c[id]=d.getElementById(id);}; |
|
返回顶楼 | |
发表时间:2008-12-02
最后修改:2008-12-02
关于 addEvent :
你下载个 新版本的ymPrompt 看看 已经不是这么写的了 另外 你为什么要选择 这个组件来作为学习的对象呢? 我觉得 这个并不是一个学习的好例子 |
|
返回顶楼 | |
发表时间:2008-12-02
fins 写道 你下载个 新版本的ymPrompt 看看
已经不是这么写的了 另外 你为什么要选择 这个组件来作为学习的对象呢? 我觉得 这个并不是一个学习的好例子 照楼主这样学习法,说不定会把更多的新手带到沟里的. 没有办法,我已经投隐藏了. |
|
返回顶楼 | |
发表时间:2008-12-02
yunhaifeiwu 写道 下面是可读代码: var d=document; var c=[]; $=function(id){ var cc=c[id]; var tmp; if (cc&&cc.parentNode) tmp=cc; else { c[id]=d.getElementById(id); tmp=c[id]; } return tmp; }; 应该是 var d=document; var c={}; (注意, 是花括号) 是对象 不是数组. |
|
返回顶楼 | |
发表时间:2008-12-02
fins 写道 关于 addEvent :
你下载个 新版本的ymPrompt 看看 已经不是这么写的了 另外 你为什么要 >选择 这个组件来作为学习的对象呢? 我觉得 这个并不是一个学习的好例子 汗!我觉得这个短小罢了!如果是extjs之类的,那个源代码估计看起来可吃力! 我先把 这个看完后, 自已就封装一个最简单的类似lgihtBox的东东,然后再考虑向lgihtBox的东东里再装lgihtBox的东东,再装其他简单 的封装了的组件。这个目标到达后,如果有必要,再认真找一多数人认为优秀的组件进行揣磨学习,化化改进自已原来的封装方法。 |
|
返回顶楼 | |
发表时间:2008-12-02
fins 写道 yunhaifeiwu 写道 下面是可读代码: var d=document; var c=[]; $=function(id){ var cc=c[id]; var tm<script type="text/javascript" src="http://www.iteye.com/javascripts/tinymce/themes/advanced/langs/zh.js"></script><script type="text/javascript" src="http://www.iteye.com/javascripts/tinymce/plugins/javaeye/langs/zh.js"></script>p; if (cc&&cc.parentNode) tmp=cc; else { c[id]=d.getElementById(id); tmp=c[id]; } return tmp; }; 应该是 var d=document; var c={}; (注意, 是花括号) 是对象 不是数组. 晕死,3.0的源码的确是数组。当然弄在花括符形式的对象更爽些。 |
|
返回顶楼 | |
发表时间:2008-12-02
achun 写道 fins 写道 你下载个 新版本的ymPrompt 看看
已经不是这么写的了 另外 你为什么要选择这个组件来作为学习的对象呢? 我觉得 这个并不是一个学习的好例子 照楼主这样学习法,说不定会把更多的新手带到沟里的. 没有办法,我已经投隐藏了. 隐就隐吧,如果大家都认为需要隐藏,那么的确存在着问题。至少我的方式,不适合别人采用。 以后,也仅量不发贴子了。 说实在的,软件项目中允许不断重构的方式进行开发软件,可不明白,为什么人学习中不允许 从简到难,循序渐进的方式呢? 人生下来,就先学严密的大学教材,这基本上是可笑的! |
|
返回顶楼 | |
发表时间:2008-12-02
yunhaifeiwu :
这个组件 ymPrompt 写的不好, 对学习不利. 不能因为短小 你就选择他吧 ? 比他短小的js程序多了去了. 而且我还是建议你 脚踏实地的学一学js的基础知识. 认真的看一看书 然后找一个好一点的 组件学习一下 例如 prototype jquery 之类的. (也很小). 自己不明白的东西 不要自己随便联想 胡乱分析, 要去寻求正确的答案. 例如你前面说 引用 ... 这种代码作用,初步估计是为了减少内存泄露之类的吧。
说明: 1 代码中其事件处理方式中,没有搞得很明白,暂时会用自已的方式处理事件. 你有写这些文章的时间 不如去把这些你没明白的搞明白. 总之, 你现在这种做法 对学习帮助甚微. (你目前引用的这些例子 和学习笔记 中错误太多了. 我就不一一指出了 有时间的话 你自己好好审视一下吧) |
|
返回顶楼 | |
发表时间:2008-12-02
我在javaeye等着看牛人们完美永远没有错误的教材!没有错误的探讨! |
|
返回顶楼 | |
发表时间:2008-12-02
yunhaifeiwu 写道 说实在的,软件项目中允许不断重构的方式进行开发软件,可不明白,为什么人学习中不允许 从简到难,循序渐进的方式呢? 人生下来,就先学严密的大学教材,这基本上是可笑的! 重构是要建立在编译正确的基础上的. 你不能在IDE里都是小红叉叉的时候 说:没事 以后还可以重构. 于是就不去修改那些明显的错误 继续开发吧? 学习只是 从基础开始 是可以的. 但是 基础是有前提的 一定要有一个 "良好的基础". 看不好的书籍 采用不好的学习方法 研究不好的代码 , 有什么益处? |
|
返回顶楼 | |