源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

jQuery中isFunction方法的BUG修复

  • 时间:2022-08-27 15:37 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:jQuery中isFunction方法的BUG修复
[url=http://github.com/jquery/jquery]jQuery 1.4[/url] 源码 449 行(core.js 431 行),判断是否为函数的方法如下(思路来源于 [url=http://www.crockford.com/]Douglas Crockford[/url] 的《The Miller Device》):
[code]isFunction: function( obj ) {

   
return toString.call(obj) === "[object Function]";
},[/code]
同时 jQuery 的作者也作了部分注释: [quote] 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). [/quote] 即:此方法在 IE 下无法正确识别 DOM 方法和一些函数(例如 alert 方法等)。 为什么会这样呢?

[Ctrl+A 全选 注:[url=http://www.1sucai.cn/article/23421.htm]如需引入外部Js需刷新才能执行[/url]]

会发现在 IE 下用 typeof 检测 alert、confirm 方法以及 DOM 的方法显示 object,而其他浏览器下显示 function。 那如何完善这个问题呢? [list=1] [*]typeof 检测某个方法(例如:document.getElementById) 是否是 object,如何是,则重写 isFunction 函数; [/*][*]怎样重写呢?正则判断传入的对象字符串后(”" + fn),是否起始位置含有 function,即:/^\s*\bfunction\b/.test(” + fn)。 [/*][/list] OK,看下根据以上思路修改后的 isFunction 函数:
[url=http://webreflection.blogspot.com/2009/08/isfunction-hacked-iscallable-solution.html]《isFunction hacked, isCallable solution》[/url] [*][url=http://dbj.org/dbj/?p=286]《isFunction() or isObject(), that is the question ? 》[/url] [/*][*][url=http://peter.michaux.ca/articles/lazy-function-definition-pattern]《Lazy Function Definition Pattern》[/url] [/*][/list]
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部