<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        Javascript判斷函數類型完美解決方案_javascript技巧

        來源:懂視網 責編:小采 時間:2020-11-27 20:44:08
        文檔

        Javascript判斷函數類型完美解決方案_javascript技巧

        Javascript判斷函數類型完美解決方案_javascript技巧:但是,有一些細節并不為我們所熟知。John Resig 在分析了這些細節之后,為我們提供了一個完美的解決方案,本文將作詳細介紹: 一、傳統方法不為人所知的細節 毫無疑問,在判斷函數類型時,我們使用的是typeof方法,比如: 代碼如下:function fn(
        推薦度:
        導讀Javascript判斷函數類型完美解決方案_javascript技巧:但是,有一些細節并不為我們所熟知。John Resig 在分析了這些細節之后,為我們提供了一個完美的解決方案,本文將作詳細介紹: 一、傳統方法不為人所知的細節 毫無疑問,在判斷函數類型時,我們使用的是typeof方法,比如: 代碼如下:function fn(

        但是,有一些細節并不為我們所熟知。John Resig 在分析了這些細節之后,為我們提供了一個完美的解決方案,本文將作詳細介紹:

        一、傳統方法不為人所知的細節
        毫無疑問,在判斷函數類型時,我們使用的是typeof方法,比如:
        代碼如下:
        function fn(){
        //content
        }
        alert(typeof fn)//結果是"function"。

        但是,該方法在一些瀏覽器中并不是像我們想像的那樣工作。

        1、Firefox2和Firefox3
        在這兩個瀏覽器中,用typeof檢測HTML對象元素的類型,得到是一個不精確的“function”結果,而不是“object”,如HTMLDocument。如:
        代碼如下:
        alert(typeof HTMLDocument);
        //在Firefox2中結果是"function";
        //在Firefox3中結果是"object";

        2、Firefox2
        對于正則表達式,在該瀏覽器中返回的結果是“function”(在Firefox3中結果是“object”),如:
        代碼如下:
        var reg = /test/;
        alert(typeof reg);
        //在Firefox2中結果是"function";
        //在Firefox3中結果是"object";

        注:本人在safari中測試,其結果也是“function”。
        3、IE6和IE7
        在IE中對DOM元素使用typeof方法,得到的結果是“object”。如:
        代碼如下:
        alert(typeof document.getElementsByTagName("body")[0].getAttribute);
        //結果是"object"

        4、Safari 3
        safari認為DOM元素的NodeList是一個函數,如:
        代碼如下:
        alert(typeof document.body.childNodes);
        //結果是"function"

        很明顯,如果你要測試一個對象是否為函數,使用typeof方法并不能從真正意義上保證測試結果。那么,我們就需要一種在所有瀏覽器中都能保證測試結果的解決方案。我們知道function本身有apply()和call()兩種方法,但這兩個方法在IE中存在問題的函數中并不存在,試試下面的測試:
        代碼如下:
        alert(typeof document.getElementsByTagName("body")[0].getAttribute.call)
        //在IE中結果是"undefined"

        顯然,我們不能利用這兩個方法。

        二、完美解決方案及實現過程
        John Resig為我們提供了一個完美的解決方案,這個復雜但很穩定的判斷一個對象是否為函數的方法如下:
        代碼如下:
        function isFunction( fn ) {
        return !!fn && !fn.nodeName && fn.constructor != String &&
        fn.constructor != RegExp && fn.constructor != Array &&
        /function/i.test( fn + "" );
        }

        這個函數首先保證測試的對象存在,并將其序列化成含有“function”的字符串,這個是我們檢測的基礎(fn.constructor != String,fn.constructor != Array, and fn.constructor != RegExp)。另外,我們需要保證聲明的函數不是一個DOM節點(fn.nodeName)。然后,我們就可以作toString測試。如果我們將一個函數轉換成字符串,在一個瀏覽器中(fn+"")給我們的結果就像這樣“function name(){...}”。現在,判斷它是否為函數就很簡單,僅僅只需要判斷字符串中是否包含單詞“function”。這很神奇,對于任何有問題的函數,在所有瀏覽器中都能得到我們所需要的結果。這個函數較之于傳統的方法,運行速度有些不盡人意,作者建議我們保守使用。

        John Resig 是jQuery庫的開發者,相信使用該庫的朋友們對該庫簡潔的語法和優秀的性能并不陌生。作者除追求代碼簡潔和性能高效之外,其盡善盡美的精神也讓人嘆服。如果你是一個完美主義者,相信此文對你很有幫助。

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        Javascript判斷函數類型完美解決方案_javascript技巧

        Javascript判斷函數類型完美解決方案_javascript技巧:但是,有一些細節并不為我們所熟知。John Resig 在分析了這些細節之后,為我們提供了一個完美的解決方案,本文將作詳細介紹: 一、傳統方法不為人所知的細節 毫無疑問,在判斷函數類型時,我們使用的是typeof方法,比如: 代碼如下:function fn(
        推薦度:
        標簽: 判斷 完美 js
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 91午夜精品亚洲一区二区三区| 免费精品国产自产拍观看| 亚洲午夜未满十八勿入网站2| 久久精品国产亚洲av天美18| 美女视频黄a视频全免费| 亚洲一区中文字幕在线观看| 免费H网站在线观看的| 亚洲精品午夜国产va久久| 国产香蕉九九久久精品免费| 亚洲色偷偷偷综合网| 大陆一级毛片免费视频观看i| 亚洲成在人线aⅴ免费毛片| 国产三级免费电影| xxxxx做受大片在线观看免费| 亚洲中文字幕无码中文字在线 | 亚洲AV综合色区无码一区爱AV| 最近免费字幕中文大全| 久久青青成人亚洲精品| 99久热只有精品视频免费观看17| 亚洲日韩乱码中文无码蜜桃臀 | 亚洲黄黄黄网站在线观看| xxxxxx日本处大片免费看| 亚洲成AV人片天堂网无码| 亚洲视频免费在线看| 亚洲乱妇熟女爽到高潮的片| 亚洲精品无码av天堂| 日本高清免费观看| 亚洲色图视频在线观看| 日本免费观看网站| 国产精品成人免费观看| 亚洲黑人嫩小videos| 免费视频中文字幕| 日韩在线视频播放免费视频完整版| 亚洲熟妇av一区二区三区| 中文字幕乱码免费视频| 色婷婷亚洲一区二区三区| 亚洲AV无码一区二区二三区软件| 无码日韩精品一区二区免费| 国产精品免费在线播放| 91亚洲国产成人久久精品网址 | 亚洲av鲁丝一区二区三区|