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和背题没啥区别。


相关文章
|
8月前
|
Kotlin
Kotlin类的定义、构造函数、封装、继承和多态
Kotlin类的定义、构造函数、封装、继承和多态
|
5月前
|
Go
Golang语言结构体(struct)面向对象编程进阶篇(封装,继承和多态)
这篇文章是关于Go语言中结构体(struct)面向对象编程进阶篇的教程,涵盖了Go语言如何实现封装、继承和多态,以及结构体内存布局的相关概念和案例。
231 4
|
7月前
|
Rust
rust 引用了Trait的实现,为什么还需要引入Trait 才能调用实现的方法
rust 引用了Trait的实现,为什么还需要引入Trait 才能调用实现的方法
|
9月前
|
存储 Rust 程序员
rust中的函数:定义、调用与闭包
本文将深入探讨Rust编程语言中函数的定义、调用方式,以及闭包(closures)的概念和应用。我们将从函数的基本语法出发,逐步深入到函数的参数传递、返回值,再进一步介绍闭包及其捕获环境的能力,帮助读者全面理解并熟练运用Rust中的函数与闭包。
类和对象-封装-封装的意义
类和对象-封装-封装的意义
57 0
|
JavaScript C#
js 面向对象封装与继承
js 面向对象封装与继承
407 0
Golang面向对象编程之继承&虚基类【组合&接口】
Golang面向对象编程之继承&虚基类【组合&接口】
|
Java
Java语法之封装
我们应该都知道Java面向对象的三大特性:封装,继承,多态,今天小编给大家分享封装这个概念以及使用,我们开始吧:
117 0
Go-面向对象编程详解(封装、继承、多态等)
Go-面向对象编程详解(封装、继承、多态等)
198 0
Go-面向对象编程详解(封装、继承、多态等)
|
存储 Java Python
Python基础 面向对象的三大特征(封装、继承、多态)封装的实现方式、继承和多态、深拷贝和浅拷贝
python的面向对象的三大特征之一,封装。封装的实现方式 一:封装:提高程序的安全性 1.将数据(属性)和行为(方法)包装到类对象中。在方法内部对属性进行操作,在类对象的外部调用方法。
Python基础 面向对象的三大特征(封装、继承、多态)封装的实现方式、继承和多态、深拷贝和浅拷贝