插件的原理

在JavaScript中,在定义函数的时候,如果在函数体的后面加一对小括号,这个函数就会立即执行。如,以下代码定义了一个匿名函数,并立即执行:

 
  1. function () { /* code */ } ();

由于它本身就是一个函数,因此可以接受参数。如,以下代码为匿名函数传入一个参数 a,它的值是 2:

 
  1. (function (a) { /* code */ } (2));

当把这类函数放在一个 .js 文件中,你只需引用这个 .js 文件,这些函数便会自动执行,无需显式调用,非常方便。因此,Bootstrap 中的所有插件,都使用了这种模式。比如,以下是 button.js 文件的格式:

 
  1. +function ($) {
  2.   'use strict';
  3.   /* other code */
  4. }(jQuery);

这个文件的意思是声明一个函数,然后立即执行,并将jQuery对象作为函数的参数。这样作的好处是,此时函数内部的 $ 已经是局部变量,不会再受到外部作用域的影响。

function前面 + 号的作用是将函数声明转化为函数表达式,用来消除函数声明和函数表达式间的歧义。一元运算符可以算是消除歧义的最好方式,+ 号只是其中之一,你也可以使用其他一元运算符,如 !、;、+、-、=、~ 等。

关于作者

歪脖先生,十五年以上软件开发经验,酷爱Web开发,精通 HTML、CSS、JavaScript、jQuery、JSON、Python、Less、Bootstrap等,著有《HTML宝典》、《揭秘CSS》、《Less简明教程》、《JSON教程》、《Bootstrap2用户指南》、《Bootstrap3实用教程》,并全部在 GitHub 上开源。

Bootstrap3 插件的原理相关推荐

  1. Android 插件化原理学习 —— Hook 机制之动态代理

    前言 为了实现 App 的快速迭代更新,基于 H5 Hybrid 的解决方案有很多,由于 webview 本身的性能问题,也随之出现了很多基于 JS 引擎实现的原生渲染的方案,例如 React Nat ...

  2. 【Android 插件化】Hook 插件化框架 ( hook 插件化原理 | 插件包管理 )

    Android 插件化系列文章目录 [Android 插件化]插件化简介 ( 组件化与插件化 ) [Android 插件化]插件化原理 ( JVM 内存数据 | 类加载流程 ) [Android 插件 ...

  3. 【Android 插件化】插件化原理 ( 类加载器 )

    Android 插件化系列文章目录 [Android 插件化]插件化简介 ( 组件化与插件化 ) [Android 插件化]插件化原理 ( JVM 内存数据 | 类加载流程 ) [Android 插件 ...

  4. Android 插件化原理解析——Activity生命周期管理

    之前的 Android插件化原理解析 系列文章揭开了Hook机制的神秘面纱,现在我们手握倚天屠龙,那么如何通过这种技术完成插件化方案呢?具体来说,插件中的Activity,Service等组件如何在A ...

  5. Android 插件化原理解析——Hook机制之AMSPMS

    在前面的文章中我们介绍了DroidPlugin的Hook机制,也就是代理方式和Binder Hook:插件框架通过AOP实现了插件使用和开发的透明性.在讲述DroidPlugin如何实现四大组件的插件 ...

  6. Atitit 插件机制原理与设计微内核 c# java 的实现attilax总结

    Atitit 插件机制原理与设计微内核 c# java 的实现attilax总结 1. 微内核与插件的优点1 2. 插件的注册与使用2 2.1. Ioc容器中注册插件2 2.2. 启动器微内核启动3 ...

  7. mybatis 原理_Mybatis大揭秘:plugin插件设计原理

    点击上方"后端技术精选",选择"置顶公众号" 技术文章第一时间送达! 作者:祖大俊 my.oschina.net/zudajun/blog/738973 大多数 ...

  8. android handler的机制和原理_Android 插件化原理——Hook机制之AMSamp;PMS解析

    在前面的文章中我们介绍了DroidPlugin的Hook机制,也就是代理方式和Binder Hook:插件框架通过AOP实现了插件使用和开发的透明性.在讲述DroidPlugin如何实现四大组件的插件 ...

  9. Android插件化原理—ClassLoader加载机制

    前面<Android 插件化原理学习 -- Hook 机制之动态代理>一文中我们探索了一下动态代理 hook 实现了 启动没有在 AndroidManifest.xml 中显式声明的 Ac ...

最新文章

  1. 201671010423 词频统计软件项目报告
  2. 机器学习 KD树_递归_回溯_搜索(matlab实现)
  3. 编译通过,但在运行时报Resolution of the dependency failed
  4. What is the difference between “def” and “val” to define a function
  5. python版本差异_python的版本的差别 2,3
  6. Oracle 通过字段名查询其所在的表
  7. OS + Linux RedHat 7 / redhat 7 configuration
  8. ASP.NET MVC 解析模板生成静态页一(RazorEngine)
  9. 深入理解信息科学技术与创新之“自然智能”
  10. think-cell 无法安装怎么解决?
  11. win7硬盘安装工具_扔掉U盘和光驱,一键从硬盘安装操作系统,这个硬盘装机工具真爽...
  12. 大数据整体技术流程及架构
  13. Photoshop CS2 9.0注册机和注册方法
  14. iOS 日记app的制作过程(Objective-C)
  15. 操作系统--6设备管理
  16. 《人无信不立》你是一个有信用的人吗?
  17. python绘制笛卡尔直角坐标系
  18. Essential Phone PH1 刷 Android 9.0的方法
  19. Wordpress 4.6 任意命令执行漏洞
  20. msgbox窗口学习总结窗体复合框

热门文章

  1. 学习webpack前的准备工作
  2. 高精度测量让交会对接更“温柔”
  3. zzuliOJ 1894: 985的方格难题 【dp】
  4. LaTeX之参考文献的写法
  5. mybatis 插入数据时返回主键
  6. 康柏川(帮别人名字作诗)
  7. 判断java String中是否有汉字的方法
  8. css转化成stylus,stylus
  9. java logger 格式_org.apache.log4j.Logger详解
  10. DocHub v2.3 发布,构建你自己的百度文库