avatar

闭包作用域与构造函数结合

闭包作用域与构造函数结合

前言

由于对模块化一知半解,特想知根知底,故而记录此文。

为什么要模块化

  • 网站慢慢变成web应用程序
  • 站点变大,代码复杂性增加
  • 最优化的部署代码
  • 分离JS文件/模块

从设计模式开始

传统写法

污染全局导致命名冲突

1
2
function func1() {}
function func2() {}

简单封装(命名空间模式)

减少了全局变量,但本质上还是一个对象,依旧不安全

1
2
3
4
5
var MYOBJ = {
func1: function() {},
func2: function() {}
}
MYOBJ.func1()

匿名闭包(IIFE模式)

函数是JavaScript的唯一作用域

1
2
3
4
5
6
7
8
9
10
11
12
13
var Module = (function() {
var PRIVATE = `private variable`
var func = function() {
console.log(PRIVATE)
}

return {
func: func
}
})()

Module.func()
Module.PRIVATE // undefined

```

文章作者: 张复明
文章鏈接: https://hexo.zhangaming.com/2020/03/31/func/
版權聲明: 本博客所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自 阿明的博客
打賞
  • 微信
    微信
  • 支付寶
    支付寶

評論