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