• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >jquery > jQuery中isFunction方法的BUG修复

jQuery中isFunction方法的BUG修复

作者: 字体:[增加 减小] 来源:互联网 时间:2017-08-16

通过本文主要向大家介绍了jQuery,isFunction等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

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 方法等)。

为什么会这样呢?
修复 jQuery 中 isFunction 方法的 BUG

使用 typeof 运算符检测各种方法:

测试原始的 isFunction 函数方法

测试修复后 isFunction 函数方法


[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 函数:

参考阅读:

  • 《isFunction hacked, isCallable solution》
  • 《isFunction() or isObject(), that is the question ? 》
  • 《Lazy Function Definition Pattern》
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 基于jQuery对象和DOM对象和字符串之间的转化实例
  • jquery+css实现简单的图片轮播效果
  • 使用jQuery实现鼠标点击左右按钮滑动切换
  • jQuery实现上传图片前预览效果功能
  • jQuery初级教程之网站品牌列表效果
  • 基于jquery实现多选下拉列表
  • jQuery接受后台传递的List的实例详解
  • 详解jquery选择器的原理
  • jQuery上传插件webupload使用方法
  • 关于jquery form表单序列化的注意事项详解

相关文章

  • 2017-08-16jquery固定底网站底部菜单效果
  • 2017-08-16动态加载jquery库的方法
  • 2017-08-16jQuery+ajax实现鼠标单击修改内容的方法
  • 2017-08-16jquery获取url参数及url加参数的方法
  • 2017-08-16老生常谈combobox和combotree模糊查询
  • 2017-08-16JQuery自定义事件的应用 JQuery最佳实践
  • 2017-08-16jquery焦点图片切换(数字标注/手动/自动播放/横向滚动)
  • 2017-08-16JQuery页面图片切换和新闻列表滚动效果的具体实现
  • 2017-08-16js查找某元素中的所有图片地址的方法
  • 2017-08-16jQuery的promise与deferred对象在异步回调中的作用

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • jQuery实现选中行变色效果(实例讲解)
    • jquery捕捉回车键及获取checkbox值与异步请求的方法
    • jQuery中clone()方法用法实例
    • jQuery中hover与mouseover和mouseout的区别分析
    • Jquery之Ajax运用 学习运用篇
    • 提高jQuery性能的十个诀窍
    • 开发插件的两个方法jquery.fn.extend与jquery.extend
    • JQuery实现的按钮倒计时效果
    • 基于jQuery的前端数据通用验证库
    • 基于jQuery的图片左右无缝滚动插件

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有