惰性函數(shù)定義模式 使用方法第3/3頁(yè)
更新時(shí)間:2007年09月20日 19:55:43 作者:
總結(jié)
惰性函數(shù)定義模式讓我可以編寫(xiě)一些緊湊、健壯、高效的代碼。用到這個(gè)模式的每一次,我都會(huì)抽空贊嘆JavaScript的函數(shù)式編程能力。
JavaScript同時(shí)支持函數(shù)式和面向?qū)ο蟊愠?。市面上有很多重點(diǎn)著墨于面向?qū)ο笤O(shè)計(jì)模式的書(shū)都可以應(yīng)用到JavaScript編程中。不過(guò)卻沒(méi)有多少書(shū)涉及函數(shù)式設(shè)計(jì)模式的例子。對(duì)于JavaScript社區(qū)來(lái)說(shuō),還需要很長(zhǎng)時(shí)間來(lái)積累良好的函數(shù)式模式。
更新:
這個(gè)模式雖然有趣,但由于大量使用閉包,可能會(huì)由于內(nèi)存管理的不善而導(dǎo)致性能問(wèn)題。來(lái)自 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獲取表格視圖所選行號(hào)的ids過(guò)程解析
這篇文章主要介紹了JS獲取表格視圖所選行號(hào)的ids過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-02-02
JS跳出循環(huán)的方法區(qū)別對(duì)比分析(break,continue,return)
面向?qū)ο缶幊陶Z(yǔ)法中我們會(huì)碰到break ,continue, return這三個(gè)常用的關(guān)鍵字,那么關(guān)于這三個(gè)關(guān)鍵字的使用具體的操作是什么呢?接下來(lái)通過(guò)本文給大家講解JS跳出循環(huán)的方法區(qū)別對(duì)比分析(break,continue,return),感興趣的朋友一起看看吧2023-02-02
前端實(shí)現(xiàn)多個(gè)內(nèi)容滑動(dòng)輪播圖效果實(shí)例
在前端開(kāi)發(fā)中,滑動(dòng)輪播圖是一種常見(jiàn)的交互元素,用于展示多張圖片或內(nèi)容,這篇文章主要介紹了前端實(shí)現(xiàn)多個(gè)內(nèi)容滑動(dòng)輪播圖效果的相關(guān)資料,文中給出了詳細(xì)的代碼示例,需要的朋友可以參考下2025-04-04
package.json與package-lock.json的區(qū)別及詳細(xì)解釋
不知道大家平時(shí)在開(kāi)發(fā)中有沒(méi)有注意到,你的項(xiàng)目中有兩個(gè)文件:package.json,package-lock.json,應(yīng)該很多人平時(shí)都不會(huì)去關(guān)注這兩個(gè)文件有啥關(guān)系吧,這篇文章主要給大家介紹了關(guān)于package.json與package-lock.json的區(qū)別及詳細(xì)解釋,需要的朋友可以參考下2022-08-08
JS實(shí)現(xiàn)十字坐標(biāo)跟隨鼠標(biāo)效果
這篇文章給大家分享一下通過(guò)JS實(shí)現(xiàn)十字坐標(biāo)跟隨鼠標(biāo)效果的代碼,有需要的朋友參考學(xué)習(xí)下吧。2017-12-12
javascript中callee與caller的區(qū)別分析
有些小伙伴可能會(huì)問(wèn)caller,callee 是什么?在javascript 中有什么樣的作用?那么本篇會(huì)對(duì)于此做一些基本介紹。希望能夠?qū)Υ蠹依斫鈐avascript中的callee與caller有所幫助。2015-04-04
基于bootstrap寫(xiě)的一點(diǎn)localStorage本地儲(chǔ)存
這篇文章主要介紹了基于bootstrap寫(xiě)的一點(diǎn)localStorage本地儲(chǔ)存,需要的朋友可以參考下2017-11-11

