欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JS判定是否原生方法

 更新時間:2013年07月22日 11:02:39   作者:  
這篇文章介紹了js判定是否原生方法,有需要的朋友可以參考一下
瀏覽器的趨勢是加入越來越多對象,像Worker,同時也為舊有的對象添加新方法。如何兼容它的第一步就是檢測它們是否存在,沒有則補(bǔ)上自己的兼容代碼。這時問題就來了,有的類庫是給你做了這一步,但有時沒有,有時是做了,但并不符合標(biāo)準(zhǔn)。因此單純是typeof Array.prototype.map === "function"可能不夠用。這時isNative方法就要登場了。
我一直用的版本,自己寫的:
復(fù)制代碼 代碼如下:

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值其實(shí)也是個不合群的:
復(fù)制代碼 代碼如下:

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]); 
  }

它比我的版本多一個參數(shù),能指定是那個原生對象的方法,但一個參數(shù)與兩個參數(shù)是沒關(guān)系的,結(jié)果只是表明,我們倆離完美還有段距離。即使這兩個函數(shù)取并集,可能還不是正確的全集。
當(dāng)然這不是[native code]或者 source code not available還是[function]的問題,因?yàn)橐猨avascript中,很容易山寨各種方法與對象。如,下面的代碼就可以成功騙過檢測代碼。
復(fù)制代碼 代碼如下:

window.test = { 
  toString: function() { 
    return [function]; 
  } 
}; 

isNative(window, test); // true
最后我從nwmathers中找到這個:
復(fù)制代碼 代碼如下:

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, )); 
   }; 
 })();

相關(guān)文章

  • JavaScript之Canvas_動力節(jié)點(diǎn)Java學(xué)院整理

    JavaScript之Canvas_動力節(jié)點(diǎn)Java學(xué)院整理

    這篇文章主要介紹了JavaScript之Canvas,Canvas是HTML5新增的組件,它就像一塊幕布,可以用JavaScript在上面繪制各種圖表、動畫等
    2017-07-07
  • 無阻塞加載腳本分析[全]

    無阻塞加載腳本分析[全]

    script標(biāo)簽的阻塞行為會對頁面性能產(chǎn)生負(fù)面影響,大多數(shù)瀏覽器在下載或執(zhí)行腳本的同時,會阻塞下載位于它之后的資源,也會阻塞渲染位于它之后的元素。
    2011-01-01
  • jsonp格式前端發(fā)送和后臺接受寫法的代碼詳解

    jsonp格式前端發(fā)送和后臺接受寫法的代碼詳解

    jsonp是ajax提交的一種格式不會受跨域限制,這篇文章主要介紹了jsonp格式前端發(fā)送和后臺接受寫法的代碼詳解,需要的朋友可以參考下
    2019-11-11
  • 微信小程序開發(fā)之路由切換頁面重定向問題

    微信小程序開發(fā)之路由切換頁面重定向問題

    這篇文章主要介紹了微信小程序開發(fā)之路由切換頁面重定向問題,又通過實(shí)例代碼給大家介紹了微信小程序的路由跳轉(zhuǎn)方法,需要的朋友可以參考下
    2018-09-09
  • 使用tree?shaking?移除無用代碼

    使用tree?shaking?移除無用代碼

    這篇文章主要為大家介紹了使用tree?shaking?移除無用代碼示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • js前端傳json后臺接收‘‘被轉(zhuǎn)為quot的問題解決

    js前端傳json后臺接收‘‘被轉(zhuǎn)為quot的問題解決

    這篇文章主要介紹了js前端傳json后臺接收‘‘被轉(zhuǎn)為&quot;的問題解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • webpack proxy 使用(代理的使用)

    webpack proxy 使用(代理的使用)

    這篇文章主要介紹了webpack proxy 使用(代理的使用),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • javascript中自定義對象的屬性方法分享

    javascript中自定義對象的屬性方法分享

    這篇文章介紹了在javascript中自定義對象的屬性方法,有需要的朋友可以參考一下
    2013-07-07
  • 解決layui checkbox 提交多個值的問題

    解決layui checkbox 提交多個值的問題

    今天小編就為大家分享一篇解決layui checkbox 提交多個值的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-09-09
  • JavaScript與jQuery中文檔就緒函數(shù)的區(qū)別

    JavaScript與jQuery中文檔就緒函數(shù)的區(qū)別

    這篇文章主要介紹了JavaScript與jQuery中文檔就緒函數(shù)的區(qū)別,文章內(nèi)容介紹詳細(xì),具有一的的參考價值,需要的小伙伴可以參考一下
    2022-03-03

最新評論