Day12 - 闭包应用4 - 类库封装

简介: Day12 - 闭包应用4 - 类库封装

基本概念


闭包和即时函数的另外一个重要用途就是类库封装


类库封装要求


类库封装最重要的要求就是不能让类库中的变量污染全局。


比如jQuery只暴露 $ 就好了


(function () {
  var jQuery = window.$ = function() {
    // Intialize
  }
})()


直立棉的两次赋值


  • jQuery构造器(匿名函数)赋值给window.$ 作为全局变量


  • 为了保证其他代码改变或删除jQuery变量 , 所以声明一个局部变量jQuery, 保证jQuery代码内都可以使用jQuery这个名字。


能够达到以上目的的另外一种封装


var $ = (function() {
  function jQuery() {
    // Initialize
  }
  return jQuery
})()


实战Rollup


实际上Rollup使用即时函数iife只是打包方式之一,其他

其他的包括amd, cjs, es, iife, umd。咱们到了rollup面试题的时候再细说。


npx rollup -f iife -n $ -o ./dist/jquery.js  ./src/jquery.js


  • -f 指定iife方式输出


  • -o 指定输出文件


  • -n 指定输出变量名


输出结果:


var $ = (function (exports) {
    'use strict';
    function jQuery() {
        console.log('I am jQuery');
    }
    exports.jQuery = jQuery;
    Object.defineProperty(exports, '__esModule', { value: true });
    return exports;
})({});


略有不同 主要是为了rollup实现方便。


调用


<script src="./dist/jquery.js"></script>
<script>
    // test
    $()
</script>


👌到这为止就把类库封装简单过了一下。下一期我们讲讲webpack打包与闭包应用。


面试攻略



点评


  • 闭包处处都有,但是能说出经典应用又是一个难题。说Helloworld和背题没啥区别。


相关文章
|
存储 缓存 Dart
[Flutter]足够入门的Dart语言系列之面向对象:类成员的可见性、常量和工厂构造函数详解
类和成员的可见性,这在基于库或包的开发中非常重要,Dart中提供了工厂构造函数,可以方便的实现单例、缓存实例对象、返回子类等,以及常量构造函数的使用......
309 0
[Flutter]足够入门的Dart语言系列之面向对象:类成员的可见性、常量和工厂构造函数详解
|
5月前
|
开发框架 前端开发 JavaScript
在各种开发项目中使用公用类库的扩展方法,通过上下文方式快速调用处理函数
在各种开发项目中使用公用类库的扩展方法,通过上下文方式快速调用处理函数
|
7月前
|
存储 Rust 程序员
rust中的函数:定义、调用与闭包
本文将深入探讨Rust编程语言中函数的定义、调用方式,以及闭包(closures)的概念和应用。我们将从函数的基本语法出发,逐步深入到函数的参数传递、返回值,再进一步介绍闭包及其捕获环境的能力,帮助读者全面理解并熟练运用Rust中的函数与闭包。
|
7月前
|
数据安全/隐私保护 C++
C++类与对象【封装】
C++类与对象【封装】
Java接口:实现多重继承,促进代码复用与扩展的强大工具
Java接口:实现多重继承,促进代码复用与扩展的强大工具
183 0
类和对象-封装-封装的意义
类和对象-封装-封装的意义
52 0
Golang面向对象编程之继承&虚基类【组合&接口】
Golang面向对象编程之继承&虚基类【组合&接口】
|
自然语言处理 Java 开发者
5.2 Lambda表达式在框架和库中的应用:Lambda表达式在Web开发中的应用
5.2 Lambda表达式在框架和库中的应用:Lambda表达式在Web开发中的应用
91 0
|
Java
Java语法之封装
我们应该都知道Java面向对象的三大特性:封装,继承,多态,今天小编给大家分享封装这个概念以及使用,我们开始吧:
110 0
|
数据安全/隐私保护 C++
C++类和对象【1】—— 封装
C++类和对象【1】—— 封装
148 0
C++类和对象【1】—— 封装