JS一些類實現方式的效能研究

文章目錄 實現1實現2實現3實現4實現5實現6實現7實現8實現9實現10實現11 從javaeye看到一貼,探討如何?計時器,集思廣益,最後竟然提出了十多種的實現。這再次證明了JS的寫法很靈活(舉個反面的例子,如Python,其哲學原則是one way to go!)。這裡整理一下,研究一下各種實現的效能問題。現在JS越來越向富用戶端發展,UI組件乃至網頁遊戲,對效能問題是相當重視的。實現1 function Timer(id){

利用數組緩衝Regex

如果能用字面量建立正則就最好不過,顯然有時我們不得不使用new RegExp()這種大消耗的建立方法,比如文法高亮與排版就大量用到Regex,要用到的patten越多,需要的時間就越長,Firefox好像是12秒就發出警告,IE就直接假死。這時我們就需要利用組存大法要提高我們程式的效能了。通常擺在我們眼前的如下兩種選擇來作為我們的容器,數組或對象。我這裡選擇前者,前者更輕量一點。下面我們就hasClass函數作效能改進。原來的寫法:var hasClass = function(ele,cls)

判斷是否為數組

判斷一個對象是否為數組比較麻煩,以下是我收集的各種版本Douglas Crockford的版本 var isArray = function(a){ return a && typeof a === 'object' && typeof a.length === 'number' && typeof a.splice === 'function' &&

一步步教你實現跨遊覽器的日期選取器

由於日曆與日期選取器幾乎是同一回事,日曆部分的講解我就不重複了,沒有看過的朋友可以參看我這篇博文。不過日期選取器有一個痛點,就是如何防止在IE6中被下拉開選擇框蓋住的問題。不但是日期選取器,所有彈出層都有這個問題。這個問題其實網上都有現成的答案注1,最流行的做法就是利用iframe元素了注2。iframe已IE6與IE7中罕有的能遮住select的windowless元素,我們的日期選取器的容器也是windowless元素,windowless元素可以通過z-index改變它們的層疊順序。那麼就

Hpricot and utf-8

I tried to use Hpricot to parse a page with special characters in a utf-8 encoding. The docs tell you to do this:require 'rubygems'require 'open-uri'require 'hpricot' doc = Hpricot(open("http://url/"))However, this won’t give you the output you want.

)Firefox 3.5中的DOM遍曆

原譯文Firefox 3.5中包括了對兩個W3C

raphaeljs圖形庫學習筆記

官網地址:點我<!doctype html><html dir="ltr" lang="zh-CN"> <head> <meta charset="utf-8"/> <meta http-equiv="X-UA-Compatible" content="IE=8"> <script src="http://bloghighlighter.googlecode.com/files/raphael-min.js"

用Raphael繪製雷達圖(radar chart)

首先建立一個項目,當前要先在資料庫設定一下。項目說簡單也簡單,說難也難。要用到Ajax與Raphael類庫,不過更多的時候自己舞弄三角函數(做統計這少不了。)接著刪除public下的index.html,並在routes下添加: map.root :abilities#★★★★ # Install the default routes as the lowest priority. # Note: These default routes make all actions in

移除DOM節點

在IE中移除容器類節點,會引起記憶體泄露,最好是建立一個新的節點,比如div,然後將要刪除的節點放入這個div中,再將div的innerHTML清空。其它的直接removeChild就可以了。 var removeNode = !+"\v1" ? function(){ var d; return function(node){ if(node && node.tagName != 'BODY'){ d = d ||

精確擷取頁面元素的位置

現在網上最流行方法是John Resig在《Pro JavaScript techniques》提出的offset大法,累加元素offsetParent的offsetLeft和offsetTop一直到DOM的頂層。 //取得元素x座標 function pageX(elem) { return elem.offsetParent?(elem.offsetLeft+pageX(elem.offsetParent)):elem.offsetLeft; }

真正的XHTML 2.0模板

今天在外國一網址淘到的,不過已經沒大用處,就連嚴格遵守XHTML1規則的網站也不多,今年還聽說難產了,人員被調配去搞HTML5!標籤還是那些,B標籤還能使用,dtd沒有看。http://www.w3.org/MarkUp/html-spec/html-spec_3.html#SEC3.4 <?xml version="1.0"?><!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN""http://www.w3.org/MarkUp/

搭建rails運行環境

今天重裝系統,重新搭建rails的運行環境,因此以下命令都是面對最新出現的情況。安裝Ruby One-Click Installer注,盡量不要安裝那些新的版本,本來ruby與rails對window都不太友好,通常這些類庫的mswin32版本都是最晚出。貿貿然充當小白鼠,苦頭有得你受。我安裝的版本是1.8.6-25。然後把C:\Ruby\bin加入到系統變數中即完成ruby及以下ruby類庫(gem)的安裝。 ruby-mswin32

利用fleximage實現圖片上傳

flexmage現在是rails中上傳圖片與處理圖片的首選,就算是paperclip也比不上它。它對Rmagick做了一層很人性化的封裝,讓我們處理圖片更加便捷。比起paperclip,它原生就支援遠程URL上傳圖片和刪除硬碟上的附件。如果看過我的另一篇博文《利用paperclip實現圖片上傳》,其流程是一樣。因此我們就在那個應用上擴充就是!ruby script/generate scaffold Picture user:belongs_to

關於圖片放大和取得尺寸

原貼地址實際應用中,我們經常要處理圖片的大小,如放大鏡效果。一般來說,我們是不推薦用圖片輪轉的方法動用兩張或多張圖片,除非圖片放得很大導致失真。現在我們討論一下如何放大圖片。第一種情形,圖片的長與高已知,但並非寫style裡面 function enlarge(el) {el.width = 300;el.height = 240;}posted on 2009-08-05 18:02 司徒正美 閱讀(...) 評論(...) 編輯 收藏

)請不要做浮躁的人

1.不要看到別人的回複第一句話就說:給個代碼吧!你應該想想為什麼。當你自己想出來再參考別人的提示,你就知道自己和別人思路的差異。2.初學者請不要看太多太多的書那會誤人子弟的,先找本系統的學,很多人用了很久都是只對部分功能熟悉而已,不系統還是不夠的。3.看協助,不要因為很難而自己是初學者所以就不看;協助永遠是最好的參考手冊,雖然協助的文字有時候很難看懂,總覺得不夠直觀。4.不要被對象、屬性、方法等詞彙所迷惑;最根本的是先瞭解最基礎知識。5.不要放過任何一個看上去很簡單的小問題--他們往往並不那麼簡

轉:ie6與firefox操作iframe中DOM節點的一點不同

原地址:http://bluehua.org/2008/11/01/96.html依次在兩個瀏覽器中運行以下代碼運行代碼運行代碼運行代碼三段代碼在firefox下面都是ok的,但是只有第三段在ie6下面能正常運行,前兩段都會報參數無效的錯誤……這說明在ie6下只有使用iframe當前document產生的節點才能被append到DOM中,其他insertBfore..同理IE8已和其他遊覽器一致了!

利用acts_as_ferret實現全文檢索索引

acts_as_ferret是在Rails中實現全文檢索索引的外掛程式,它的實現基於Ferret,Ferret是Apache

利用paperclip實現圖片上傳

現在rails上最火的兩大上傳圖片外掛程式是fleximage與paperclip。如果單是處理圖片,一氣呵成的話,當然是fleximage,但如果還要上其他mp3,flv等附件,做成多態關聯,那就選paperclip。嘛,在一般的功能上,paperclip還是比老一輩的上傳外掛程式要優勝不少,如什麼acts_as_attachment,attachment_fu,還是更輕量化的file_column。安裝支援本外掛程式要有Rmagick與ImageMagick的外部支援,安裝請參照我的另一篇文

document.getElementsByClassName的理想實現

各種實現方式Pure DOM通常先使用getElementsByTagName("*")取出文檔中所有元素,然後進行遍曆,使用Regex找出匹配的元素放入一個數組返回。由於IE5不支援document.getElementsByTagName("*"),要使用分支document.all以防錯誤。The Ultimate getElementsByClassName方案,作者為Robert Nyman,05年實現,可見老外許多東西在很早以前就走得很遠了。//三個參數都是必需的,尋找一網頁中500

擷取函數名

如果當前函數是有名函數,則返回其名字,如果是匿名函數則返回被賦值的函數變數名,如果是閉包中匿名函數則返回“anonymous”。 var getFnName = function(callee){ var _callee = callee.toString().replace(/[\s\?]*/g,""), comb = _callee.length >= 50 ? 50 :_callee.length; _callee =

總頁數: 61357 1 .... 5858 5859 5860 5861 5862 .... 61357 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.