天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

jQuery中isFunction方法的BUG修復

jQuery 1.4 源碼 449 行(core.js 431 行),判斷是否為函數的方法如下(思路來源于 Douglas Crockford 的《The Miller Device》):

isFunction: function( obj ) {
   
return toString.call(obj) === "[object Function]";
},

同時 jQuery 的作者也作了部分注釋:

See test/unit/core.js for details concerning isFunction. Since version 1.3, DOM methods and functions like alert aren't supported. They return false on IE (#2968).

即:此方法在 IE 下無法正確識別 DOM 方法和一些函數(例如 alert 方法等)。

為什么會這樣呢?

[Ctrl+A 全選 注:如需引入外部Js需刷新才能執行]
會發現在 IE 下用 typeof 檢測 alert、confirm 方法以及 DOM 的方法顯示 object,而其他瀏覽器下顯示 function。

那如何完善這個問題呢?

  1. typeof 檢測某個方法(例如:document.getElementById) 是否是 object,如何是,則重寫 isFunction 函數;
  2. 怎樣重寫呢?正則判斷傳入的對象字符串后(”" + fn),是否起始位置含有 function,即:/^/s*/bfunction/b/.test(” + fn)。

OK,看下根據以上思路修改后的 isFunction 函數:
復制代碼 代碼如下:
var isFunction = (function() { // Performance optimization: Lazy Function Definition return "object" === typeof document.getElementById ? isFunction = function(fn){ try { return /^/s*/bfunction/b/.test("" + fn); } catch (x) { return false } }: isFunction = function(fn){ return "[object Function]" === Object.prototype.toString.call(fn); };})()

參考閱讀:

  • 《isFunction hacked, isCallable solution》
  • 《isFunction() or isObject(), that is the question ? 》
  • 《Lazy Function Definition Pattern》

JavaScript技術jQuery中isFunction方法的BUG修復,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 短篇合集纯肉高H深陷骚 | 久久国产精品萌白酱免费 | 国产主播福利一区二区 | 精品久久久久久久99热 | 久久成人无码国产免费播放 | 先锋影音av最新资源 | 久久AV亚洲精品一区无码网 | 黄色免费在线网址 | 久久成人免费观看全部免费 | 亚洲免费国产在线日韩 | 亚洲 制服 欧美 中文字幕 | 狠狠色狠狠色综合曰曰 | 最新毛片网 | 国产69TV精品久久久久99 | av在线观看地址 | 日本午夜精品一区二区三区电影 | 欧美性XXXXX极品娇小 | 亚洲成人网导航 | 亚洲综合AV色婷婷五月蜜臀 | 久久www99re在线播放 | 精品国产乱码久久久久久免费 | 狼人射综合 | 丰满少妇69激懒啪啪无码 | 国产精品爽爽久久久久久无码 | 国产偷国产偷亚洲高清app | 男人一生要读的书 | 窝窝色资源站 | 99精品视频在线观看免费 | 色婷婷我要去我去也 | 3344永久在线观看视频免费 | 色多多污污版免费下载安装 | 国产精品99久久久久久AV蜜臀 | 成人无码在线超碰视频 | 黑人巨大两根一起挤进欧美 | 亚洲国产综合久久久无码色伦 | 翁止熄痒禁伦短文合集免费视频 | 亚洲最大在线视频 | 草柳最新地址 | 九色终合九色综合88 | 成人永久免费视频网站在线观看 | 久久成人永久免费播放 |