性能
成員嵌套越深,訪問速度越慢。location.href 總是快于window.location.href,而后者也要
比window.location.href.toString()更快。如果這些屬性不是對象的實(shí)例屬性,那么成員解析還要在每個(gè)點(diǎn)上
搜索原形鏈,這將需要更長時(shí)間。
?
function hasEitherClass(element, className1, className2){return element.className == className1 || element.className == className2;}在此代碼中,element.className 被訪問了兩次。很明顯,在這個(gè)函數(shù)過程中它的值是不會改變的,但仍
然引起兩次對象成員搜索過程。你可以將它的值存入一個(gè)局部變量,消除一次搜索過程。修改如下:
?
function hasEitherClass(element, className1, className2){var currentClassName = element.className;return currentClassName == className1 || currentClassName == className2;}此重寫后的版本中成員搜索只進(jìn)行了一次。既然兩次對象搜索都在讀屬性值,所以有理由只讀一次并將
值存入局部變量中。局部變量的訪問速度要快得多。
一般來說,如果在同一個(gè)函數(shù)中你要多次讀取同一個(gè)對象屬性,最好將它存入一個(gè)局部變量。以局部變
量替代屬性,避免多余的屬性查找?guī)硇阅荛_銷。在處理嵌套對象成員時(shí)這點(diǎn)特別重要,它們會對運(yùn)行速
度產(chǎn)生難以置信的影響。
在一個(gè)函數(shù)中,你絕不應(yīng)該對一個(gè)對象成員進(jìn)行超過一次搜索,
除非該值可能改變。
轉(zhuǎn)載于:https://www.cnblogs.com/darr/p/5050470.html
總結(jié)
- 上一篇: 上线到凌晨4点半 pagehelper的
- 下一篇: CentOS中安装Docker步骤