惰性函數(shù)定義模式 使用方法
更新時(shí)間:2007年09月20日 19:55:43 作者:
總結(jié)
惰性函數(shù)定義模式讓我可以編寫(xiě)一些緊湊、健壯、高效的代碼。用到這個(gè)模式的每一次,我都會(huì)抽空贊嘆JavaScript的函數(shù)式編程能力。
JavaScript同時(shí)支持函數(shù)式和面向?qū)ο蟊愠獭J忻嫔嫌泻芏嘀攸c(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)文章
獲取任意Html元素與body之間的偏移距離 offsetTop、offsetLeft (For:IE5+ FF1 )[
獲取任意Html元素與body之間的偏移距離 offsetTop、offsetLeft (For:IE5+ FF1 )[...2006-12-12JavaScript對(duì)象擴(kuò)展方法的用法詳解
JavaScript對(duì)象中的可擴(kuò)展性指的是:是否可以給對(duì)象添加新屬性。所有的內(nèi)置對(duì)象和自定義對(duì)象顯示的都是可擴(kuò)展的,對(duì)于宿主對(duì)象,則由JavaScript引擎決定2022-11-11一篇文章帶你學(xué)會(huì)JavaScript計(jì)時(shí)事件
JS可以實(shí)現(xiàn)很多java代碼不易完成的功能,下面這篇文章主要給大家介紹了關(guān)于如何通過(guò)一篇文章帶你學(xué)會(huì)JavaScript計(jì)時(shí)事件的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-11-11詳解處理bootstrap4不支持遠(yuǎn)程靜態(tài)框問(wèn)題
這篇文章主要介紹了詳解處理bootstrap4不支持遠(yuǎn)程靜態(tài)框問(wèn)題,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-07-07淺談JavaScript中面向?qū)ο蟮牡纳羁截惡蜏\拷貝
下面小編就為大家?guī)?lái)一篇淺談JavaScript中面向?qū)ο蟮牡纳羁截惡蜏\拷貝。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-08-08判斷用戶(hù)的在線(xiàn)狀態(tài) onbeforeunload事件
window.event.clientX和window.event.clientY 將捕捉當(dāng)前事件發(fā)生時(shí)鼠標(biāo)相對(duì)與窗口的桌面坐標(biāo),通常情況下IE的關(guān)閉按鈕都會(huì)在頁(yè)面的右上部分,所以點(diǎn)關(guān)閉的時(shí)候鼠標(biāo)的坐標(biāo)的Y坐標(biāo)一定是小于0的2011-03-03BootStrap Validator 根據(jù)條件在JS中添加或移除校驗(yàn)操作
這篇文章主要介紹了BootStrap Validator 根據(jù)條件在JS中添加或移除校驗(yàn)的相關(guān)資料,需要的朋友可以參考下2017-10-10