详解JavaScript自执行函数和jQuery扩展方法

本文主要为大家详细介绍了javascript自执行函数和jquery扩展方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能帮助到大家。

我们通常将JS代码写在一个单独的JS文件中,然后在页面中引入该文件。但是,有时候引入后会碰到变量名或函数名与其它JS代码冲突的问题。那么如何解决这个问题呢?作用域隔离。在JS中,作用域是通过函数来划分的,将JS代码封装到函数中进行调用可以避免变量名/函数名冲突的问题,但是这也并不是万无一失,因为封装函数本身有可能和其它函数重名,解决方案:自执行函数。

自执行函数是用一对圆括号将匿名函数包起来,加括号(传参)会立即执行。因为函数无名字,实现了作用域的绝对隔离和函数名的冲突问题。基本形式如下:

(function () {  console.log('do something');})();

登录后复制

比如我们在custome.js文件中写了一些JS逻辑,并封装到函数init中。我们用自执行函数将自己定义的函数init包起来,就像下面这样。

(function () {  function init() {    console.log('execute init...');  }  init();})();

登录后复制

当我们在html中引入custome.js:,自执行函数会立即执行,进而执行内部定义的init函数:

立即学习“Java免费学习笔记(深入)”;

不过,自执行函数立即执行的特性,使其很难调用。通过定义jQuery扩展方法,可以解决这一问题,拿到自执行函数调用和执行的主动权。

首先我们看一下定义jQuery扩展方法的基本形式:

jQuery.extend({  'myMethod': function () {    console.log('do something');  }});

登录后复制

这样,通过$.myMethod()或jQuery.myMethod()就可以调用上面定义的方法。

定义jQuery扩展方法还有另外一种方式:.fn

jQuery.fn.extend({  'myMethod': function () {    console.log('do something');;  }});

登录后复制

通过如上方式定义的扩展方法,需要通过jQuery选择器调用,比如通过标签选择器$(“button”).myMethod(args)

了解了JS自执行函数和jQuery扩展方法后,我们将二者结合起来。

下面我们利用自执行函数立即执行的特点,来定义jQuery扩展方法:

(function (jq) {  function init() {    console.log('do something');  }  jq.extend({    'myMethod': function () {      init();    }  })})(jQuery);

登录后复制

说明,这个自执行函数接收jQuery对象作为参数,然后在内部为jQuery定义一个扩展方法myMethod,该方法执行真正的逻辑代码init函数

调用:

 $(function () {  $.myMethod(); });

登录后复制

说明:

jQuery文件引入后,jQuery对象全局可用;
紧接着引入自定义JS文件custome.js,其中的自执行函数接收jQuery对象为参数,立即执行,在内部为jQuery定义一个扩展方法myMethod
然后我们就可以在页面加载完成后,通过调用$.meMethod()或jQuery.myMethod()来执行init函数。

相关推荐:

js函数中的自执行函数

javascript自执行函数之伪命名空间封装法_javascript技巧

js自执行函数的几种不同写法的比较_javascript技巧

以上就是详解JavaScript自执行函数和jQuery扩展方法的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2790198.html

(0)
上一篇 2025年3月8日 18:52:33
下一篇 2025年3月8日 18:52:41

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 三种JavaScript模拟实现封装的方式及写法区别分享

     继承是使用一个子类继承另一个父类,那么子类可以自动拥有父类中的所有属性和方法,这个过程叫做继承!  js中有很多实现继承的方法,今天我给大家介绍其中的三种吧。下面通过本文来了解下js模拟实现封装的三种方法,需要的朋友参考下吧,希望能帮助到…

    编程技术 2025年3月8日
    200
  • javascript浏览器用户代理检测脚本方法详解

    本文主要为大家带来一篇javascript浏览器用户代理检测脚本实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望能帮助到大家。 以下是完整的用户代理字符串检测脚本,包括检测呈现引擎、平台、Wind…

    编程技术 2025年3月8日
    200
  • javascript中的typeof和类型判断详解

    本文主要为大家带来一篇基于javascript中的typeof和类型判断(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望能帮助到大家。 typeof ECMAScript 有 5 种原始类型(pr…

    编程技术 2025年3月8日
    200
  • jquery使用iscroll实现上拉、下拉加载刷新实例分享

    本文主要为大家详细介绍了jquery使用iscorll实现上拉、下拉加载刷新的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能帮助到大家。 本文实例为大家分享了iscorll实现上拉下拉加载刷新的具体代码,供大家参考,具体内容…

    编程技术 2025年3月8日
    200
  • AngularJs用户登录交互及验证、阻止FQ处理详解

    本文主要为大家详细介绍了angularjs用户登录问题处理,包括交互及验证、阻止fq处理,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能帮助到大家。 1. 静态页面搭建及ng的form表单验证实现:               登…

    编程技术 2025年3月8日
    200
  • Angular js综合操作方法详解

    本文主要介绍了angular js 实现添加用户、修改密码、敏感字、下拉菜单的综合操作方法,需要的朋友可以参考下,希望能帮助到大家。 小编在上篇文章给大家介绍了AngularJS模糊查询功能实现代码(过滤内容下拉菜单排序过滤敏感字符验证判断…

    编程技术 2025年3月8日
    200
  • Vue.js 2.5新特性分享

    本文主要和大家分享vue.js 2.5新特性,vue 2.5 level e 已发布,在原来2.x的基础上做了很多相应改进和对 bug 的修复,目前 2.5 系列最新的版本为 2.5.2,本文给大家介绍vue 2.5 新特征,需要的朋友参考…

    2025年3月8日
    200
  • Angular.js排序查询功能的实现

    本文主要介绍了angularjs添加排序查询功能的实例代码,需要的朋友可以参考下,希望能帮助到大家。 废话不多说了,直接给大家贴代码了,具体代码如下所示: var app=angular.module(“myapp”,[]); app.co…

    编程技术 2025年3月8日
    200
  • Vue.js2.0变化小结分享

    有小伙伴觉得vue更新太快了导致课程所讲知识和现在vue的版本不符,从而报错,本文主要和大家分享vue.js2.0变化小结,希望能帮助到大家。 1.关于Vue中$index获取索引值已经取消,多用于多个元素的操作,像ul中的li,通过v-f…

    编程技术 2025年3月8日
    200
  • 使用PM2管理nodejs进程详解

    本文主要介绍了详解使用pm2管理nodejs进程,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望能帮助到大家。 pm2 是一个带有负载均衡功能的Node应用的进程管理器. 当你要把你的独立代码利用全部的服务…

    2025年3月8日
    200

发表回复

登录后才能评论