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

首頁 > 編程 > JavaScript > 正文

判定是否原生方法的JS代碼

2019-11-20 21:43:45
字體:
來源:轉載
供稿:網友

瀏覽器的趨勢是加入越來越多對象,像Worker,同時也為舊有的對象添加新方法。如何兼容它的第一步就是檢測它們是否存在,沒有則補上自己的兼容代碼。這時問題就來了,有的類庫是給你做了這一步,但有時沒有,有時是做了,但并不符合標準。因此單純是typeof Array.prototype.map === "function"可能不夠用。這時isNative方法就要登場了。

我一直用的版本,自己寫的:

復制代碼 代碼如下:

var isNative = function(method){//判定是否為原生方法
      return !! method && (//{/s*/[native code/]/s*/}/.test(method+"") ||
          //{/s*///* source code not available /*///s*/}/.test(method+""));//這里是為了兼容opera9.x的
  }

但世界這么大,肯定也有研究過這問題,下面是Diego Perini的版本,指出safari對原生方法的toString值其實也是個不合群的:
復制代碼 代碼如下:

var isNative = function(object, method) {
    return object && method in object &&
      typeof object[method] != 'string' &&
      // IE & W3C browser return "[native code]"
      // Safari < = 2.0.4 will return "[function]"
      (//{/s*/[native code/]/s*/}|^/[function/]$/).test(object[method]);
  }

它比我的版本多一個參數,能指定是那個原生對象的方法,但一個參數與兩個參數是沒關系的,結果只是表明,我們倆離完美還有段距離。即使這兩個函數取并集,可能還不是正確的全集。

當然這不是[native code]或者 source code not available還是[function]的問題,因為要javascript中,很容易山寨各種方法與對象。如,下面的代碼就可以成功騙過檢測代碼。

復制代碼 代碼如下:

window.test = {
  toString: function() {
    return '[function]';
  }
};
isNative(window, 'test'); // true

最后我從nwmathers中找到這個:
復制代碼 代碼如下:

var isNative = (function() {
   var s = (window.open + '').replace(/open/g, '');
   return function(object, method) {
     var m = object ? object[method] : false, r = new RegExp(method, 'g');
     return !!(m && typeof m != 'string' && s === (m + '').replace(r, ''));
   };
 })();

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品99久久久久久久久| 精品激情国产视频| 欧美精品国产精品日韩精品| 7777精品视频| 国产成人精品国内自产拍免费看| 欧美丝袜美女中出在线| 国产黑人绿帽在线第一区| 97在线视频免费| 欧美成人精品在线观看| 亚洲xxx大片| 国产精品美女久久久久久免费| 久久av红桃一区二区小说| 中文字幕一区日韩电影| 91在线观看免费网站| 成人欧美一区二区三区在线| 97成人精品区在线播放| 国产精品三级久久久久久电影| 国产精品你懂得| 国产成人精品av| 久久久国产一区二区| 精品国产乱码久久久久久虫虫漫画| 狠狠躁天天躁日日躁欧美| 久久久久久久久久久免费精品| 精品视频偷偷看在线观看| 欧美激情亚洲国产| 日韩大片在线观看视频| 亚洲自拍欧美另类| 日韩欧美亚洲范冰冰与中字| 亚洲欧洲美洲在线综合| 91爱视频在线| 亚洲精品久久久久久久久| 久久这里只有精品99| 日韩在线播放一区| 国产成人免费av电影| 国产精品偷伦一区二区| 欧美在线观看日本一区| 国产亚洲aⅴaaaaaa毛片| 91po在线观看91精品国产性色| 日韩欧美亚洲成人| 久久精品一区中文字幕| 欧美激情国产高清| 欧美日韩福利视频| 欧美亚洲在线观看| 久久99精品久久久久久噜噜| 2021久久精品国产99国产精品| 欧美视频一区二区三区…| 国产精品美女久久久久av超清| 中文字幕久精品免费视频| 久久理论片午夜琪琪电影网| 高清欧美性猛交| 国语自产精品视频在线看| 久久久久久国产精品| 久久91超碰青草是什么| 亚洲女人初尝黑人巨大| 欧美精品videosex性欧美| 成人av在线网址| 91国内免费在线视频| 亚洲欧洲偷拍精品| 亚洲视频视频在线| 亚洲国产一区二区三区在线观看| 性色av一区二区三区| 欧美与黑人午夜性猛交久久久| 国产91免费观看| 国产色综合天天综合网| 欧美中文在线免费| 国产综合色香蕉精品| 中文字幕无线精品亚洲乱码一区| 国产精品免费久久久久影院| 成人午夜激情网| 日本亚洲欧美成人| 国产91露脸中文字幕在线| 精品亚洲一区二区三区四区五区| 欧美成人合集magnet| www.亚洲男人天堂| 欧美精品videos| 成人激情视频网| 亚洲自拍偷拍区| 亚洲女人初尝黑人巨大| 欧美体内谢she精2性欧美| 九九精品在线视频| 亚洲欧美国产精品va在线观看| 久久久久久国产精品久久| 成人高h视频在线| 精品国产一区二区在线| 亚洲精品综合久久中文字幕| 国产精品电影久久久久电影网| 久久天天躁狠狠躁夜夜躁| 91大神在线播放精品| 日韩精品免费综合视频在线播放| 中文国产亚洲喷潮| 国产福利精品在线| 欧美成人精品在线| 欧美精品在线视频观看| 国产又爽又黄的激情精品视频| 黄网动漫久久久| 国产欧美日韩免费看aⅴ视频| 91亚洲精品在线| 亚洲美女在线观看| 久久艳片www.17c.com| 日韩美女福利视频| 久久91超碰青草是什么| 亚洲国产一区二区三区四区| 国内外成人免费激情在线视频| 热久久免费国产视频| 国产精品黄色影片导航在线观看| 亚洲欧美国产精品va在线观看| 国产成人涩涩涩视频在线观看| 欧美一级淫片videoshd| 午夜精品在线视频| 国内精品国产三级国产在线专| 亚洲一区二区三区四区在线播放| 欧美精品18videos性欧美| 亚洲免费一级电影| 亚洲free性xxxx护士白浆| 中文字幕国产精品久久| 欧美一级黄色网| 色无极影院亚洲| 精品久久久久久久久久久久久| 成人激情视频在线观看| 国产一区二区激情| 国产精品老女人精品视频| 国内精品在线一区| 日韩欧美精品在线观看| 中文字幕亚洲综合| 欧美极品少妇xxxxⅹ喷水| 欧美极品在线播放| 久久久成人精品| 久国内精品在线| 成年人精品视频| 亚洲欧洲在线看| www.亚洲天堂| 欧美精品久久久久久久免费观看| 国产精品极品尤物在线观看| 在线观看国产欧美| 精品无人区乱码1区2区3区在线| 欧美日韩性生活视频| 久久影院免费观看| 精品偷拍一区二区三区在线看| 国产一区二区三区视频免费| 97精品欧美一区二区三区| 欧美黑人性视频| 亚洲japanese制服美女| 欧美精品亚州精品| 亚洲精品国产suv| 亚洲国产精品国自产拍av秋霞| 91精品国产综合久久香蕉最新版| 亚洲另类激情图| 亚洲free性xxxx护士hd| 精品色蜜蜜精品视频在线观看| 亚洲综合视频1区| 国产成人一区二| 久久这里有精品| 亚洲欧美国产视频| 成人乱人伦精品视频在线观看| 精品国产精品三级精品av网址| 欧美性感美女h网站在线观看免费| 亚洲欧美日韩一区二区在线| 欧美视频国产精品| 国产午夜精品全部视频在线播放| 欧美午夜精品久久久久久人妖| 国产成人精品日本亚洲| www国产91| 最近2019中文免费高清视频观看www99| 久久最新资源网|