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

首頁 > 語言 > JavaScript > 正文

JavaScript中判斷原生函數檢查function是否是原生代碼

2024-05-06 16:08:39
字體:
來源:轉載
供稿:網友
檢查某個function是否是原生代碼,要檢測這一點,最簡單的辦法當然是判斷函數的 toString 方法返回的值
 
 

我總是經常碰到需要檢查某個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在线日本国产| 欧美黑人性视频| 欧美性一区二区三区| 亚洲少妇中文在线| 亚洲成人激情小说| 精品中文字幕在线观看| xxx欧美精品| 日韩欧美精品网址| 久久夜色精品国产| 色综合色综合久久综合频道88| 中文字幕亚洲无线码在线一区| 久久精品亚洲国产| 精品国产精品自拍| 亚洲欧美另类国产| 日韩美女毛茸茸| 色妞在线综合亚洲欧美| 性欧美视频videos6一9| 国产一区二区三区在线播放免费观看| 琪琪亚洲精品午夜在线| 自拍偷拍亚洲在线| 日韩av在线免费看| 亚洲图片在线综合| 欧洲永久精品大片ww免费漫画| www国产亚洲精品久久网站| 欧美极品少妇全裸体| 欧美激情综合色综合啪啪五月| 久久久电影免费观看完整版| 2019中文字幕在线免费观看| 91亚洲午夜在线| 国产精品永久在线| 国产欧美精品一区二区三区-老狼| 性色av香蕉一区二区| 欧美激情国产高清| 亚洲网在线观看| 亚洲精品国产精品乱码不99按摩| 国产精品久久久久aaaa九色| 亚洲va久久久噜噜噜| 国产精品国内视频| 欧美精品电影免费在线观看| 午夜精品国产精品大乳美女| 精品国偷自产在线视频| 韩国三级电影久久久久久| 91久久精品日日躁夜夜躁国产| 国产97在线播放| 日韩免费视频在线观看| 国产精品第100页| 久精品免费视频| 国产精品爽爽爽| 日韩高清电影免费观看完整版| 欧美激情视频在线免费观看 欧美视频免费一| 91av福利视频| 成人a在线视频| 亚洲精品成人久久电影| 久久久噜久噜久久综合| 日韩欧美国产成人| 亚洲性av网站| 91在线播放国产| 97久久精品视频| 亚洲精品成人久久久| 91九色单男在线观看| 久久久久成人网| 成人激情视频小说免费下载| 亚洲欧美日韩爽爽影院| 国产一区二区三区在线| 日韩一区二区av| 欧美电影在线免费观看网站| 国产精品日日摸夜夜添夜夜av| 久久精品亚洲国产| 91精品国产成人| 全亚洲最色的网站在线观看| 福利精品视频在线| 国产精品视频xxx| 国产精品一香蕉国产线看观看| 97精品视频在线| 国产精品网站入口| 日韩高清免费在线| 日韩电影中文字幕| 久久精品视频网站| 国产精品91免费在线| 国产精品一久久香蕉国产线看观看| 操人视频在线观看欧美| 日韩免费在线视频| 法国裸体一区二区| 成人免费看片视频| 日韩在线观看视频免费| 亚洲国产精品一区二区久| 一本大道香蕉久在线播放29| 国产在线观看91精品一区| 日韩黄色高清视频| 午夜精品久久久久久久久久久久| 亚洲欧美日韩在线一区| 精品久久香蕉国产线看观看gif| 欧美日本在线视频中文字字幕| 高清日韩电视剧大全免费播放在线观看| 国产精品无av码在线观看| 国产欧美日韩高清| 午夜免费在线观看精品视频| 成人午夜两性视频| 欧美极品少妇xxxxⅹ免费视频| 久久亚洲影音av资源网| 亚洲欧美www| 日韩av中文字幕在线| 日韩av在线免费| 亚洲丁香婷深爱综合| 97av在线影院| 亚洲另类欧美自拍| 国产精品网站大全| 日韩欧美aaa| 国产一区二区日韩| 在线观看国产精品日韩av| 国产精品老女人精品视频| 国产亚洲精品激情久久| 成人欧美一区二区三区黑人孕妇| 欧美激情一区二区三区在线视频观看| 国产激情综合五月久久| 欧美激情精品久久久久久变态| 91高潮在线观看| 日韩不卡中文字幕| 国产视频久久网| 97热在线精品视频在线观看| 亚洲欧美制服丝袜| 日本国产高清不卡| 亚洲天堂av网| 91久久精品国产91久久| 亚洲精品视频免费在线观看| 久久久精品一区二区三区| 91九色国产视频| 欧美xxxwww| 亚洲成人精品久久久| 国模精品一区二区三区色天香| 日韩高清有码在线| 欧美亚洲日本黄色| 亚洲国产美女久久久久| 精品久久久久久中文字幕一区奶水| 国产成人涩涩涩视频在线观看| 日本一区二区不卡| 欧美国产高跟鞋裸体秀xxxhd| 欧美国产日韩xxxxx| 热久久视久久精品18亚洲精品| 国产视频精品xxxx| 中文字幕久久精品| 欧美在线视频一二三| 欧美成人激情在线| 热re99久久精品国产66热| 亚洲欧美成人网| 欧美日韩ab片| 77777亚洲午夜久久多人| 国产欧美一区二区三区在线| 91最新国产视频| 北条麻妃久久精品| 欧美电影电视剧在线观看| 日韩欧美中文第一页| 亚洲精品福利在线| 中文字幕欧美视频在线| 日av在线播放中文不卡| 91精品一区二区| 欧美夫妻性生活xx| 色诱女教师一区二区三区| 亚洲性日韩精品一区二区| 亚洲毛片一区二区| 日韩精品免费看| 国产精品久久久久久av福利| 日韩在线观看免费全|