• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答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
    主站蜘蛛池模板: 日韩国产成人精品视频| 国产精品五月天强力打造| 99精品视频在线观看婷| 亚洲AV无码国产精品麻豆天美| 国产精品一区12p| 欧美精品亚洲精品日韩| 精品国产午夜福利在线观看| 日韩精品无码一区二区三区免费 | 精品人无码一区二区三区| 久久精品国产亚洲av影院| 无码国产69精品久久久久网站 | 青青草原精品国产亚洲av| 四虎国产成人永久精品免费| 国产精品无码免费播放| 97精品国产自在现线免费观看| 亚洲av无码乱码国产精品| 精品少妇一区二区三区在线| 国产精品久久久天天影视香蕉| 国产成人1024精品免费| 国产午夜精品一区二区三区小说| 欧美激情精品久久久久| 亚洲乱码精品久久久久..| 精品久久久久久国产免费了| 久久精品三级视频| 老司机性色福利精品视频| 亚洲精品成人网站在线观看 | 人妻少妇精品无码专区动漫| 久久亚洲中文字幕精品一区四 | 国产欧美日韩综合精品二区| 隔壁老王国产在线精品| 成人精品一区二区三区| 精品国产国产综合精品| 91探花福利精品国产自产在线| 国产精品亚洲综合一区| 亚洲AV永久无码精品一区二区 | 成人伊人精品色XXXX视频| 青青草原综合久久大伊人精品| 欧美成人精品欧美一级乱黄码| 2021国产精品视频| 亚洲无删减国产精品一区| 精品日韩欧美国产|