欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

惰性函數(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)文章

最新評(píng)論