总结
惰性函数定义模式让我可以编写一些紧凑、健壮、高效的代码。用到这个模式的每一次,我都会抽空赞叹JavaScript的函数式编程能力。
JavaScript同时支持函数式和面向对象便程。市面上有很多重点着墨于面向对象设计模式的书都可以应用到JavaScript编程中。不过却没有多少书涉及函数式设计模式的例子。对于JavaScript社区来说,还需要很长时间来积累良好的函数式模式。
更新:
这个模式虽然有趣,但由于大量使用闭包,可能会由于内存管理的不善而导致性能问题。来自 FCKeditor 的FredCK改进了getScrollY,既使用了这种模式,也避免了闭包:
var getScrollY = function() {
if (typeof window.pageYOffset == 'number') return (getScrollY = getScrollY.case1)();
var compatMode = document.compatMode; var documentElement = document.documentElement;
if ((typeof compatMode == 'string') && (compatMode.indexOf('CSS') >= 0) && (documentElement) && (typeof documentElement.scrollTop == 'number')) return (getScrollY = getScrollY.case2)();
var body = document.body ; if ((body) && (typeof body.scrollTop == 'number')) return (getScrollY = getScrollY.case3)();
return (getScrollY = getScrollY.case4)(); };
getScrollY.case1 = function() { return window.pageYOffset; };
getScrollY.case2 = function() { return documentElement.scrollTop; };
getScrollY.case3 = function() { return body.scrollTop; };
getScrollY.case4 = function() { return NaN; };
原文:Lazy Function Definition Pattern.
本文链接:http://www.blueidea.com/tech/web/2007/4920.asp
出处:Realazy
责任编辑:moby
上一页 惰性函数定义模式 [2] 下一页
◎进入论坛网页制作、WEB标准化版块参加讨论,我还想发表评论。
|