惰性函數(shù)定義模式 使用方法第3/3頁
更新時間:2007年09月20日 19:55:43 作者:
總結(jié)
惰性函數(shù)定義模式讓我可以編寫一些緊湊、健壯、高效的代碼。用到這個模式的每一次,我都會抽空贊嘆JavaScript的函數(shù)式編程能力。
JavaScript同時支持函數(shù)式和面向?qū)ο蟊愠獭J忻嫔嫌泻芏嘀攸c著墨于面向?qū)ο笤O(shè)計模式的書都可以應(yīng)用到JavaScript編程中。不過卻沒有多少書涉及函數(shù)式設(shè)計模式的例子。對于JavaScript社區(qū)來說,還需要很長時間來積累良好的函數(shù)式模式。
更新:
這個模式雖然有趣,但由于大量使用閉包,可能會由于內(nèi)存管理的不善而導(dǎo)致性能問題。來自 FCKeditor 的FredCK改進(jìn)了getScrollY,既使用了這種模式,也避免了閉包:
復(fù)制代碼 代碼如下:
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;
};
相關(guān)文章
JS跳出循環(huán)的方法區(qū)別對比分析(break,continue,return)
面向?qū)ο缶幊陶Z法中我們會碰到break ,continue, return這三個常用的關(guān)鍵字,那么關(guān)于這三個關(guān)鍵字的使用具體的操作是什么呢?接下來通過本文給大家講解JS跳出循環(huán)的方法區(qū)別對比分析(break,continue,return),感興趣的朋友一起看看吧2023-02-02
package.json與package-lock.json的區(qū)別及詳細(xì)解釋
不知道大家平時在開發(fā)中有沒有注意到,你的項目中有兩個文件:package.json,package-lock.json,應(yīng)該很多人平時都不會去關(guān)注這兩個文件有啥關(guān)系吧,這篇文章主要給大家介紹了關(guān)于package.json與package-lock.json的區(qū)別及詳細(xì)解釋,需要的朋友可以參考下2022-08-08
JS實現(xiàn)十字坐標(biāo)跟隨鼠標(biāo)效果
這篇文章給大家分享一下通過JS實現(xiàn)十字坐標(biāo)跟隨鼠標(biāo)效果的代碼,有需要的朋友參考學(xué)習(xí)下吧。2017-12-12
javascript中callee與caller的區(qū)別分析
有些小伙伴可能會問caller,callee 是什么?在javascript 中有什么樣的作用?那么本篇會對于此做一些基本介紹。希望能夠?qū)Υ蠹依斫鈐avascript中的callee與caller有所幫助。2015-04-04
基于bootstrap寫的一點localStorage本地儲存
這篇文章主要介紹了基于bootstrap寫的一點localStorage本地儲存,需要的朋友可以參考下2017-11-11

