摘要: 构造方法[代码]工厂方法[代码]工厂方法和构造方法都有着一个相同的缺点,就是每创建一个实例,都会实例化该类的每个函数。 原型链[代码]原型链有个缺点就是它所有属性都共享,只要一个实例改变其他的都会跟着改变。如:[代码]混合方式以上三种都有着各自的缺点,所以我们要加以改进。[代码]动态原链要解决前三种的缺点,还有一种方法。[代码] 阅读全文
posted @ 2011-02-13 19:01 bigwhiteshark(云飞扬) 阅读(310) 评论(0) 推荐(0) 编辑
摘要: 传统上,字符串连接一直是js中性能最低的操作之一。[代码]早期浏览器没有对这种运算进行优化。由于字符串是不可变的,这意味着要创建中间字符串来存储连接的结果。频繁地在后台创建和销毁字符串导制性能异常低下。发现这一点后,开发者们利用数组对象进行优化。[代码]在早期的浏览器中,没有创建和销毁中间字符串,在大量字符串连接情况下,这技术已被证明远快于使用加法方式。如今浏览器对字符串的优化已经改变了字符串相连的局面。Safari、Opera、Chrome、Firefox和IE8都在使用加法运算符上表现出了更好的性能。但是,IE8之前的版本没有优化,因此数组方法依然有效。这并不意味着字符串相连时我们要进行浏 阅读全文
posted @ 2011-02-13 18:54 bigwhiteshark(云飞扬) 阅读(1741) 评论(0) 推荐(0) 编辑
摘要: JavaScript语言是一门优秀的脚本语言。其中包含脚本语言的灵活性外还拥有许多高级语言的特性。例如充许构建和实例化一个对象,垃圾回收机制(GC:Garbage Collecation)。通常我们使用new创建对象,GC负责回收对象占用内存区域。因此了解GC,可以加深对javascript垃圾回收机制的理解。GC在回收内存时,首先会判断该对象是否被其它对象引用。在确定没有其它对象引用便释放该对象内存区域。因此如何确定对象不再被引用是GC的关键所在。[代码]如上代码中,执行完cc()后a1被回收了,此后我们可以通过b1.rr弹出文字窗口。在一些基础书籍中解释为:a1为局部变量,b1是全局变量。 阅读全文
posted @ 2011-02-13 18:36 bigwhiteshark(云飞扬) 阅读(2621) 评论(0) 推荐(0) 编辑
摘要: JavaScript 倾向于阻塞浏览器某些处理过程,如HTTP 请求和界面刷新,这是开发者面临的最显著的性能问题。保持JavaScript文件短小,并限制HTTP请求的数量,只是创建反应迅速的网页应用的第一步。一个应用程序所包含的功能越多,所需要的JavaScript 代码就越大,保持源码短小并不总是一种选择。尽管下载一个大JavaScript 文件只产生一次HTTP 请求,却会锁定浏览器一大段时间。为避开这种情况,你需要向页面中逐步添加JavaScript,某种程度上说不会阻塞浏览器。非阻塞脚本的秘密在于,等页面完成加载之后,再加载JavaScript 源码。从技术角度讲,这意味着在wind 阅读全文
posted @ 2011-02-13 17:25 bigwhiteshark(云飞扬) 阅读(2244) 评论(0) 推荐(1) 编辑
摘要: Node.js现在非常活跃,相关生态社区已经超过Lua(基本上比较知名的功能都有nodejs模块实现)。但是我们为何要使用Node.Js?相比传统的webserver服务模式,nodejs有什么优点优势?Node.Js是基于javascript语言,建构在google V8 engine以及Linux上的一个非阻塞事件驱动IO框架。nodejs是单进程单线程,但是基于V8的强大驱动力,以及事件驱动模型,nodejs的性能非常高,而且想达到多核或者多进程也不是很难(现在已经有大量的第三方module来实现这个功能)。这里主要不是介绍nodejs具体应用代码,而是想介绍一下事件驱动编程。Dan Y 阅读全文
posted @ 2011-02-13 16:58 bigwhiteshark(云飞扬) 阅读(645) 评论(0) 推荐(1) 编辑
摘要: 在设计选择器,我就做了这方面的比较,只不过这次幸运遇到另一个测试程序,它覆盖面更广,测试类型更全面。最后发现自己在选择器中用了一个很慢的循环……囧。由于IE性能比较低下,原程序根本无法运行,因此我把它移到我的博客上来,汉化一下,并减少大量的测试个数(原程序测试个数为1000,我把IE的测试个数减少为300)。但即使这样,它还是弹出警告框问你是否中止循环,你继续按否,就能看到结果了。运行结果:查看运行结果由上面的实验我们基本上可得出以下结论:while循环比for循环快。 倒序循环比顺序循环快。 缓存length属性比不缓存快。 请不要用arr[i]来 阅读全文
posted @ 2011-02-13 16:12 bigwhiteshark(云飞扬) 阅读(342) 评论(1) 推荐(0) 编辑
摘要: 懒加载技术(简称lazyload)并不是新技术, 它是js程序员对网页性能优化的一种方案.lazyload的核心是按需加载.在大型网站中都有lazyload的身影,例如谷歌的图片搜索页,迅雷首页,淘宝网,QQ空间等.因此掌握lazyload技术是个不错的选择,可惜jquery插件lazy load官网(http://www.appelsiini.net/projects/lazyload)称不支持新版浏览器。涉及到图片,falsh资源 , iframe, 网页编辑器(类似FCK)等占用较大带宽,且这些模块暂且不在浏览器可视区内,因此可以使用lazyload在适当的时候加载该类资源。避免网页打开 阅读全文
posted @ 2011-02-13 15:04 bigwhiteshark(云飞扬) 阅读(596) 评论(1) 推荐(1) 编辑