亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

JavaScript檢查某個function是否是原生代碼的方法

2019-11-20 14:15:13
字體:
來源:轉載
供稿:網友

我總是經常碰到需要檢查某個function是否是原生代碼的情況 ―― 這是功能測試中一個很重要的內容: 函數是瀏覽器內置支持的,還是通過第三方類庫模擬的。要檢測這一點,最簡單的辦法當然是判斷函數的 toString 方法返回的值啦。

JavaScript代碼

判斷函數是否是原生方法其實相當簡單:

// 判斷是否原生函數 function isNative(fn) { // 示例: // alert.toString() // "function alert() { [native code] }" // '' + fn 利用了js的隱式類型轉換. return (//{/s*/[native code/]/s*/}/).test('' + fn); }

將函數轉換為字符串表示的形式,并且執行正則匹配,這就是實現的原理。

升級版,Update!

;(function() { // 取得Object的toString方法,用于處理傳入參數value的內部(internal) `[[Class]]` var toString = Object.prototype.toString; // 取得原始的Function的toString方法,用于處理functions的反編譯代碼 var fnToString = Function.prototype.toString; // 用于檢測 宿主對象構造器(host constructors), // (Safari > 4; 真的輸出特定的數組,really typed array specific) var reHostCtor = /^/[object .+?Constructor/]$/; // 使用RegExp將常用的native方法編譯為正則模板. // 使用 `Object#toString` 是因為一般他不會被污染 var reNative = RegExp('^' + // 將 `Object#toString` 強轉為字符串 String(toString) // 對所有正則表達式相關的特殊字符進行轉義 .replace(/[.*+?^${}()|[/]////]/g, '//$&') // 為了保持模板的通用性,將 `toString` 替換為 `.*?` // 將`for ...`之類的字符替換,兼容Rhino等環境,因為他們會有額外的信息,如方法的參數數量. .replace(/toString|(function).*?(?=///()| for .+?(?=///])/g, '$1.*?') // 結束符 + '$' ); function isNative(value) { // 判斷 typeof var type = typeof value; return type == 'function' // 使用 `Function#toString`原生方法來調用, // 而不是 value 自己的 `toString` 方法, // 以免被偽造所欺騙. ? reNative.test(fnToString.call(value)) // 如果type 不是'function', // 則需要檢查宿主對象(host object)的情形, // 因為某些(瀏覽器)環境會將 typed arrays 之類的東西當作DOM方法 // 此時可能不匹配標準的Native正則模式 : (value && type == 'object' && reHostCtor.test(toString.call(value))) || false; }; // 可以將 isNative 賦值給你想要的變量/對象 window.isNative = isNative; }());
isNative(isNative) //false isNative(alert) //true window.isNative(window.isNative) //false window.isNative(window.alert) //true window.isNative(String.toString) //true
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
隔壁老王国产在线精品| 亚洲久久久久久久久久久| 国产精品免费一区二区三区都可以| 色伦专区97中文字幕| 亚洲自拍在线观看| 成人444kkkk在线观看| 亚洲精品久久久久中文字幕二区| 日韩电影在线观看永久视频免费网站| 亚洲成人网在线| www.亚洲成人| 在线视频欧美日韩| 综合欧美国产视频二区| 国产精品成人播放| 69久久夜色精品国产7777| 亚洲欧美一区二区三区四区| 成人高清视频观看www| 亚洲天堂精品在线| 日韩欧美有码在线| 亚洲少妇中文在线| 国产精品美女呻吟| 日本久久久久久久久久久| 夜夜嗨av一区二区三区免费区| 久热精品视频在线| 中日韩美女免费视频网址在线观看| 在线观看亚洲视频| 欧美日韩亚洲一区二| 欧美壮男野外gaytube| 亚洲xxx自由成熟| 亚洲成人av片在线观看| 91理论片午午论夜理片久久| 久久久99久久精品女同性| 日韩电影免费在线观看| 精品一区二区三区四区| 精品福利在线视频| 成人精品久久久| 久久久最新网址| 久久久成人精品视频| 美女av一区二区三区| 亚洲男人第一网站| 黄色精品一区二区| 亚洲精品在线视频| 精品久久香蕉国产线看观看亚洲| 成人黄色在线观看| 国产精品免费小视频| 按摩亚洲人久久| 亚洲精品一区在线观看香蕉| 亚洲bt欧美bt日本bt| 亚洲国产精品99久久| 国产亚洲欧美aaaa| 国产91色在线| 亚洲午夜精品久久久久久久久久久久| 亚洲精品98久久久久久中文字幕| 色婷婷综合久久久久| 久久亚洲精品国产亚洲老地址| 日韩欧美在线观看视频| 欧美亚洲午夜视频在线观看| 在线播放亚洲激情| 久久国产精彩视频| 国产97色在线|日韩| 欧美第一黄网免费网站| 裸体女人亚洲精品一区| 欧美国产日韩xxxxx| 成人欧美在线视频| 亚洲一区二区少妇| 日韩av在线网页| 久久久精品国产一区二区| 欧美极品美女视频网站在线观看免费| 国产精品美女久久久久久免费| 国产成人高潮免费观看精品| 成人性生交大片免费看小说| 成人精品久久久| 亚洲国产精彩中文乱码av| 福利视频第一区| 国产精品香蕉av| 在线看日韩欧美| 在线日韩第一页| 欧美激情免费视频| 亚洲一区亚洲二区| 亚洲国产99精品国自产| 国产精品扒开腿做爽爽爽男男| 日韩极品精品视频免费观看| 成人激情黄色网| 国产日韩欧美在线观看| 久久久久久久久亚洲| 久久亚洲春色中文字幕| 亚洲欧美日韩网| 亚洲tv在线观看| 日韩在线资源网| 日韩av影视在线| 国内精品国产三级国产在线专| 日韩天堂在线视频| 欧美香蕉大胸在线视频观看| 国产精品视频区| 久久精品国产清自在天天线| 一个色综合导航| 久久精品久久久久久| 日韩在线观看电影| 色青青草原桃花久久综合| 欧美壮男野外gaytube| 国产精品久久久久7777婷婷| 久久久久久国产精品三级玉女聊斋| 91亚洲精品久久久久久久久久久久| 97超碰蝌蚪网人人做人人爽| 人妖精品videosex性欧美| 国产一区二区三区在线看| 久久影视电视剧凤归四时歌| 日韩资源在线观看| 亚洲无av在线中文字幕| 国产精品视频最多的网站| 丝袜美腿精品国产二区| 日韩中文字幕在线精品| 国产成人久久久精品一区| 国产精品美女无圣光视频| 日韩欧美在线播放| 亚洲天堂久久av| 亚洲第一网站免费视频| 最近日韩中文字幕中文| 亚洲色图综合久久| 色噜噜国产精品视频一区二区| 91精品国产自产91精品| 日韩在线视频线视频免费网站| 久久婷婷国产麻豆91天堂| 欧美日韩亚洲91| 亚洲欧美国产日韩中文字幕| xxxx欧美18另类的高清| 狠狠色狠狠色综合日日五| 亚洲xxxx妇黄裸体| 国产丝袜一区二区三区免费视频| 欧美最顶级的aⅴ艳星| 北条麻妃一区二区三区中文字幕| 欧美日韩午夜剧场| 亚洲毛片在线观看| 98精品国产高清在线xxxx天堂| 欧美色videos| 亚洲aaa激情| 日韩av一区在线| 久久久久久美女| 98视频在线噜噜噜国产| 欧美日韩激情视频8区| 亚洲一区二区三区视频| 久久久99久久精品女同性| 日韩乱码在线视频| 在线观看欧美日韩国产| 日韩在线视频二区| 亚洲免费电影在线观看| 国产精品视频99| 国产精品嫩草视频| 亚洲在线视频观看| 精品日韩视频在线观看| 国产精品久久久久影院日本| 亚洲美女免费精品视频在线观看| 久久久精品在线观看| 91干在线观看| 久久国产精品久久久久久| 亚洲成av人片在线观看香蕉| 欧美一区二区色| 国产精品mp4| 91精品啪在线观看麻豆免费| 国产精品亚洲一区二区三区| 欧美精品性视频| 日韩在线视频国产| 欧美激情一区二区三级高清视频| 国产欧美在线看| 欧美床上激情在线观看|